You could do something like this:DECLARE @sample TABLE ( [fieldA] CHAR(1) , [fieldB] CHAR(1) , [value] INT )INSERT @sample VALUES ('A', 'B', 1), ('A', 'B', 2), ('A', 'B', 3) , ('A', 'C', 4), ('A', 'C', 25), ('A', 'C', -10)-- SELECT * FROM @sampleSELECT rs.[fieldA] , rs.[fieldB] , MAX(CASE rs.[idx] WHEN 1 THEN [value] ELSE NULL END) AS [1] , MAX(CASE rs.[idx] WHEN 2 THEN [value] ELSE NULL END) AS [2] , MAX(CASE rs.[idx] WHEN 3 THEN [value] ELSE NULL END) AS [3]FROM ( SELECT [fieldA] , [fieldB] , [value] , ROW_NUMBER() OVER ( PARTITION BY [fieldA], [fieldB] ORDER BY [value] ) AS [idx] FROM @sample ) AS rsGROUP BY [fieldA] , [fieldB]ResultsfieldA fieldB 1 2 3------ ------ ----------- ----------- -----------A B 1 2 3A C -10 4 25
Charlie===============================================================Msg 3903, Level 16, State 1, Line 1736The ROLLBACK TRANSACTION request has no corresponding BEGIN TRANSACTION