Question

I would like to transfer some existing data into new data table.

I have table with substitutions: - ID - currentItemId - formerItemId - contentId

For the same content there is possibility I have multiple entries for combinations currentItemId and formerItemId.

Let me show how it is now:

ID_T1   currentItemId          formerItemId contentId
1    100           200          300
2    100           200          301
3    100           200          302
4    105           201          303
5    105           201          304
6    110           205          320
7    111           206          321
8    120           204          322
9    130           208          323
10   130           208          324

Now, I would like to select TOP ID for each combination formerItemId and currentItemId:

ID  ID_T1 contentId
1    1    300
2    1    301
3    1    302
4    4    303
5    4    304
6    6    320
7    7    321
8    8    322
9    9    323
10   9    324

Both tables also contains timestamp and some other data - I haven't included that in order example to be more understandable.

I tried self join (no success), nested select (gives me right value for the original combination, but it doesn't repeat, it gives me NULL on ID for other records), but nothing seems to work. Tried something like:

SELECT di1.ID,
    (SELECT TOP(1) di1.ID
        FROM TABLE
        WHERE
        di1.currentItemtId = di2.currentItemtId AND di1.formerItemId = di1.formerItemId
        ) AS repeat
  ,di2.deleteItemId
  ,di1.currentitemtId
  ,di1.formerItemId
  ,di1.contentId

  FROM Table di1
  LEFT JOIN 
    Table di2 ON di1.ID = di2.ID

But this way ID doesn't repeat - I get same values for ID as in ordinary select.

I am using SQL server 2008.

Any help would be greatly appreciated.

Was it helpful?

Solution

Please try:

SELECT 
    MIN(ID) OVER (PARTITION BY currentItemId, formerItemId) ID, 
    currentItemId,
    formerItemId, 
    contentId 
FROM YourTable

SELECT 
    ID,
    MIN(ID) OVER (PARTITION BY currentItemId, formerItemId) ID_T1,
    contentId 
FROM YourTable
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top