我正在处理分组查询。 我有一个名为CarParts的简单表,其中存储了一些汽车元素。 其中一些元素可用(类型前缀为“ 05”),而某些元素被阻止(类型前缀为“ 01”)。
我想编写选择查询,该查询将按序列号和类型将表CarParts分组,如下右侧所示。
答案 0 :(得分:1)
您要条件聚合吗?
select serialnr, name,
sum(case when type like '%-05' then amount else 0 end) as [05-available],
sum(case when type like '%-01' then amount else 0 end) as [01-blocked]
from carparts
group by serialnr, name;
答案 1 :(得分:0)
您可以使用PIVOT获得所需的结果,如下所示-
SELECT SerialNr,
ISNULL([05-Available],0) [05-Available],
ISNULL([01-Available],0) [01-Available],
Name
FROM
(
SELECT SerialNr,Amount,Name,RIGHT( Type,2) +'-Available' AS P_Column
FROM CarParts
) AS P
PIVOT
(
SUM(Amount)
FOR P_Column IN ([01-Available],[05-Available])
) AS PVT
答案 2 :(得分:0)
您可以在
时使用大小写select SerialNr,Name,
sum(case when right([Type],2)='01' then amount else 0 end) as blocked_01
sum(case when right([Type],2)='05' then amount else 0 end) as availabe_05
from tbale_name group by SerialNr,Name
答案 3 :(得分:0)
select SerialNr,
sum(case when Type like '%-05' then Amount else 0 end) as '05-available',
sum(case when Type like '%-01' then Amount else 0 end) as '01-blocked',
Name
from carparts
group by SerialNr, Name