I have the below table :
ID Package 1 T 1 E 1 B 1 F 2 E 3 E 3 F 4 F 5 B 5 F
I need the below output table :
ID Package 1 T 2 E 3 E 4 F 5 B
Priority list for the packages : T, E, B, F . Basically the logic should be as below :
- If multiple entries of ID is there then select the packages based on priority list
- If single entry, then pick it as such
Advertisement
Answer
We can use ROW_NUMBER here:
WITH cte AS (
SELECT t.*, ROW_NUMBER() OVER (PARTITION BY ID
ORDER BY CASE Package WHEN 'T' THEN 1
WHEN 'E' THEN 2
WHEN 'B' THEN 3
WHEN 'F' THEN 4 END) rn
FROM yourTable t
)
SELECT ID, Package
FROM cte
WHERE rn = 1;