【发布时间】:2014-09-01 19:06:06
【问题描述】:
我有 2 个临时表
#data:
Key UserID Driver Defect1 Defect2 Defect3 Defect4
-------------------------------------------------------------------------
124 151 Paul Wheels Windows Null Null
124 151 Paul Null Null Null Null
#data2:
Key Defect5 Defect6 Defect7
--------------------------------------
124 Seats Doors Hood
我正在寻找一种方法,根据 Key 字段将这 3 行组合成一行,因此只需将它们卷起来,忽略空值并将所有内容移至一行。我已经对原始数据进行了透视以使其达到这一点,并且正在寻找下一步来完成它。
我希望到达:
#data2:
Key UserID Driver Defect1 Defect2 Defect3 Defect4 Defect5 Defect6 Defect7
------------------------------------------------------------------------------
124 151 Paul Wheels Windows Null Null Seats Doors Hood
有人可以推荐一个方法吗?
我的缺陷是基于行数(在枢轴之前)使用以下方法递增的:
SELECT @pivot_list = COALESCE(@pivot_list + ', ', '') + '[' + PIVOT_CODE + ']'
,@select_list = COALESCE(@select_list + ', ', '') +
'LEFT([' + PIVOT_CODE + '], CHARINDEX(''|'', ' + PIVOT_CODE + ')-1) AS [Defect_Item_' + SUBSTRING(PIVOT_CODE, 2, 4) + ']
'
FROM (
SELECT DISTINCT PIVOT_CODE
FROM (
SELECT 'r' + CAST(ROW_NUMBER() OVER (PARTITION BY formresultkey ORDER BY Defect_Item, Defect_description) AS VARCHAR(4)) AS PIVOT_CODE
FROM #Data3
) AS rows
) AS PIVOT_CODES
【问题讨论】:
-
使用您的 Key 列加入表,然后执行 GROUP BY Key。
标签: sql sql-server merge rows