我有源数据。
输入
政策名称 | 金额 | 类型 |
---|---|---|
PN1 | 100 | P1 |
PN2 | 200 | P2 |
PN3 | 300 | P3 |
PN4 | 400 | P1 |
PN1 | 500 | P2 |
输出
政策名称 | P1 | P2 | P3 |
---|---|---|---|
PN1 | 100 | 500 | |
PN2 | 200 | ||
PN3 | 300 | ||
PN4 | 400 |
如何在不使用枢纽关键字的情况下得到这个
我尝试使用pivot,它会起作用。但我想使用不带pivot关键字的单个查询
这个问题已被询问和回答了大约一百万次。条件聚合就是解决方案。由于您发布了示例数据和所需的输出,我认为您应该得到答案,而不是作为重复项关闭。
declare @Something table
(
Policyname char(3)
, amount int
, type char(2)
)
insert @Something values
('PN1', 100, 'P1')
, ('PN2', 200, 'P2')
, ('PN3', 300, 'P3')
, ('PN4', 400, 'P1')
, ('PN1', 500, 'P2')
select s.Policyname
, p1 = sum(case when s.type = 'P1' then amount end)
, p2 = sum(case when s.type = 'P2' then amount end)
, p3 = sum(case when s.type = 'P3' then amount end)
from @Something s
group by s.Policyname
order by s.Policyname