我有两个表,Table_A是一个工作流跟踪器,如下所示:
表_A
Unique_ID Status Decision
1234 Open Accept
5678 Closed Reject
9112 Closed Accept
3141 Open Reject
Table_B包含上面的一些唯一ID,以及已生成的各种警告消息(最多4条)。
表B
Unique_ID Warning_Code Warning
1234 1 Description1
1234 2 Description2
3141 1 Description2
5678 1 Description3
5678 2 Description1
5678 3 Description3
我很希望能够透视Table_B中的数据以行形式显示Table_A中所有的唯一ID,并具有显示该ID错误出现次数的列,并且重要的是,错误是什么。预期结果将是:
Unique_ID Status Decision Warning_1 Warning_2 Warning_3 Warning_4
1234 Open Accept Description1 Description2 - -
5678 Closed Reject Description3 Description1 Description3 Description4
9112 Closed Accept - - - -
3141 Open Reject Description3 - - -
我不确定SQL是否可以实现这种枢纽,因此不胜感激。
答案 0 :(得分:1)
对case when expression
使用条件聚合
select
a.Unique_ID,Status,Decision,
max(case when Warning_Code=1 then Warning end) as Warning_1,
max(case when Warning_Code=2 then Warning end) as Warning_2,
max(case when Warning_Code=3 then Warning end) as Warning_3,
max(case when Warning_Code=4 then Warning end) as Warning_4
from tableA a inner join tableB b on a.Unique_ID=b.Unique_ID
group by a.Unique_ID,Status,Decision
答案 1 :(得分:0)
使用汇总时的用例
select Unique_ID,Status ,Decision,
max(case when Warning_Code=1 then Warning end) as waring1
max(case when Warning_Code=2 then Warning end) waring2,
max(case when Warning_Code=3 then Warning end) waring3
from tablea a join tableb b on a.Unique_ID=b.Unique_ID
group by Unique_ID,Status ,Decision
答案 2 :(得分:0)
这是基本的数据透视查询,如果A
中的任何行在B
中没有任何决定,则只需进行左联接:
select *
from a left join b using (unique_id)
pivot (max(warning) for warning_code in (1 w1, 2 w2, 3 w3, 4 w4))