我的SQL表是
GUID Step_ID Value
----------------------------------------------
ADFE12-ASDER-... 1 10
ADFE12-ASDER-... 2 20
ADFE12-ASDER-... 3 30
ADFE12-ASDER-... 4 160
CD4563-FG567-... 1 20
CD4563-FG567-... 2 80
Q23RT5-GH678... 1 30
Q23RT5-GH678-... 2 80
Q23RT5-GH678-... 3 20
预期结果应为
GUID 1 2 3 4
---------------------------------------------------
ADFE12-ASDER-... 10 20 30 160
CD4563-FG567-... 20 80 NULL NULL
Q23RT5-GH678-... 30 80 20 NULL
这里我需要根据数据类型为GUID的列来获取详细信息。我尝试使用PIVOT表但获得异常,因为我不能在GUID列上使用聚合函数。是否有任何其他替代方法或方法可用于获得上述预期结果。
答案 0 :(得分:1)
试试这个:
select [GUID],[1],[2],[3],[4]
from
(
select [GUID], Step_ID, Value
from test
) d
pivot
(
max(Value)
for Step_ID in ([1],[2],[3],[4])
) piv;
<强> SQL FIDDLE DEMO 强>
答案 1 :(得分:1)
你可以尝试手动转移,我没有方便的SQL Server来检查GUID上的行为,但这对我来说效果很好。
select guid,
max(case when step_ID = 1 then value else null end) step_1,
max(case when step_ID = 2 then value else null end) step_2,
max(case when step_ID = 3 then value else null end) step_3,
max(case when step_ID = 4 then value else null end) step_4
from your_table
group by guid;
HTH