如何在SQL Server 2014中为特定ID字段将对角线行转换为单行。任何帮助将不胜感激
请查阅。
我的来源是SQL Server 2014
注意:
请查阅
关于输入:
ID字段将是常量,但POS字段对于特定ID将是不同的
可以有1到10个这样的POS字段出现[POS字段可以具有1-10的值]。来自POS = 1的DESC1值将转到DESC1,POS2的值将转到desc2,依此类推。
现在我只发了8次,但实际上有10次
INPUT:
ID|POS|DESC1|desc2|desc3|desc4|desc5|desc6|desc7|desc8|
1|1|ItemA|null|null|null|null|null|null|null
1|2|null|ItemB|null|null|null|null|null|null
1|3|null|null|Item C|null|null|null|null|null
1|4|null|null|null|ItemD|null|null|null|null
1|5|null|null|null|null|ItemE|null|null|null
1|6|null|null|null|null|null|value-random|null|null
1|7|null|null|null|null|null|null|Check!A|null
1|8|null|null|null|null|null|null|null|123456
OUTPUT:
ID|DESC1|desc2|desc3|desc4|desc5|Desc6|desc7|Desc8
1|ItemA|ItemB|Item C|ItemD|ItemE|value-random|Check!A|123456
这是简化的,因为我不知道你当前的查询是什么样的,但你可以使用MAX()
和GROUP BY
id。
SELECT
ID,
MAX(desc1) AS [desc1],
MAX(desc2) AS [desc2],
MAX(desc3) AS [desc3],
MAX(desc4) AS [desc4],
MAX(desc5) AS [desc5],
MAX(desc6) AS [desc6],
MAX(desc7) AS [desc7],
MAX(desc8) AS [desc8]
FROM dbo.YourTable
GROUP BY ID