将行转换为多列SQL Server

时间:2019-02-14 19:34:05

标签: sql sql-server pivot

我有一个包含多行的表,需要将其转换为具有多列的一行。在当前表中列出的项目顺序对于排名很重要,因此在将它们转置为列时,我需要它们保持顺序

Click here to see my current table and desired table

预先感谢

1 个答案:

答案 0 :(得分:0)

您可以使用row_number()并进行条件聚合:

SELECT individuaid, 
       MAX(CASE WHEN seq = 1 THEN item_no END) item_no_1,
       MAX(CASE WHEN seq = 1 THEN HL2_CODE END) HL_2_1,
       . . . . 
FROM (SELECT t.*,
            ROW_NUMBER() OVER (PARTITION BY individuaid ORDER BY item_no) AS seq
      FROM table t
     ) T
GROUP BY individuaid;