Beyondrelational

Friday, May 28, 2010

SQL convert vertical to horizontal

IF OBJECT_ID('tempdb..#Parts', 'U') IS NOT NULL DROP TABLE #Parts
CREATE TABLE #Parts
(
ID int,
ID2 int,
PartNo varchar(10)
)
SET NOCOUNT ON
INSERT INTO #Parts (ID, ID2, PartNo) Values (75, 23921, 'DENT')
INSERT INTO #Parts (ID, ID2, PartNo) Values (75, 26145, 'PLGD')
INSERT INTO #Parts (ID, ID2, PartNo) Values (75, 26145, 'PRRP')
INSERT INTO #Parts (ID, ID2, PartNo) Values (75, 26145, 'SIST')
INSERT INTO #Parts (ID, ID2, PartNo) Values (75, 57290, 'PRMD')
INSERT INTO #Parts (ID, ID2, PartNo) Values (75, 57290, 'abc')
INSERT INTO #Parts (ID, ID2, PartNo) Values (75, 57290, 'def')
INSERT INTO #Parts (ID, ID2, PartNo) Values (75, 57290, 'ghi')
INSERT INTO #Parts (ID, ID2, PartNo) Values (75, 57290, 'jkl')
SET NOCOUNT OFF
SELECT * FROM #Parts
SELECT ID, ID2,
Max((Case When RowNumber = 1 Then PartNo Else '' End)) AS Part1,
Max((Case When RowNumber = 2 Then PartNo Else '' End)) AS Part2,
Max((Case When RowNumber = 3 Then PartNo Else '' End)) AS Part3,
Max((Case When RowNumber = 4 Then PartNo Else '' End)) AS Part4
FROM
(
SELECT ID, ID2, PartNo,
ROW_NUMBER() OVER(PARTITION BY ID, ID2 ORDER BY PartNo ASC) AS RowNumber
FROM #Parts
) AS tbl
GROUP BY ID, ID2

No comments:

Post a Comment