Sql server 2012 Sql Server分组依据和案例
假设我们有以下表格内容:Sql server 2012 Sql Server分组依据和案例,sql-server-2012,group-by,case,Sql Server 2012,Group By,Case,假设我们有以下表格内容: id type value 1 A X1122 1 B JJHJU 2 A POIUY 2 C YUHGF 我想通过以下方式获得此解决方案: id valueA valueB valueC 1 X1122 JJHJU NULL 2 POIUY NULL YUHGF 我的第一次尝试是: SELECT id, CASE type WHEN A THEN value ELSE NULL E
id type value
1 A X1122
1 B JJHJU
2 A POIUY
2 C YUHGF
我想通过以下方式获得此解决方案:
id valueA valueB valueC
1 X1122 JJHJU NULL
2 POIUY NULL YUHGF
我的第一次尝试是:
SELECT id, CASE type WHEN A THEN value ELSE NULL END AS valueA
, CASE type WHEN B THEN value ELSE NULL END AS valueB
, CASE type WHEN C THEN value ELSE NULL END AS valueC
FROM table
GROUP BY id
但它会返回错误
列“type”和“value”需要位于GROUP BY语句中
有什么建议吗?您试图实现的目标称为枢轴:
declare @data table(id int, valtype char(1), val varchar(10))
insert into @data(id, valtype, val) values
(1, 'A', 'X1122'), (1, 'B', 'JJHJU'), (2, 'A', 'POIUY'), (2, 'C', 'YUHGF')
Select id, valueA = piv.A, valueB = piv.B, valueC = piv.C
From @data
Pivot (
max(val)
for valtype in ([A], [B], [C])
) as piv
输出:
1 X1122 JJHJU NULL
2 POIUY NULL YUHGF
以