try the following:
DECLARE @YourTable table (A char(3), B char(2), C char(2), D varchar(5)) INSERT INTO @YourTable VALUES ('abc','d0','e0','true') INSERT INTO @YourTable VALUES ('def','d0','e1','true') INSERT INTO @YourTable VALUES ('ghi','d0','e2','true') INSERT INTO @YourTable VALUES ('jkl','d1','e1','true') INSERT INTO @YourTable VALUES ('mno','d2','e2','false') SELECT A ,CASE WHEN ROW_NUMBER() OVER(PARTITION BY B ORDER BY A,B)=1 THEN B ELSE NULL END AS B ,CASE WHEN ROW_NUMBER() OVER(PARTITION BY C ORDER BY A,C)=1 THEN C ELSE NULL END AS C ,CASE WHEN ROW_NUMBER() OVER(PARTITION BY D ORDER BY A,D)=1 THEN D ELSE NULL END AS D FROM @YourTable ORDER BY A,B,C,D
OUTPUT:
ABCD ---- ---- ---- ----- abc d0 e0 true def NULL e1 NULL ghi NULL e2 NULL jkl d1 NULL NULL mno d2 NULL false (5 row(s) affected)
source share