如何编写SQL代码将a到b中的表聚合
表a的结构如下如何编写SQL代码将a到b中的表聚合,sql,Sql,表a的结构如下 EMP_ID DATE_OF_PURCHASE ITEM_PURCHASED ------------------------------------------ 1 01-JAN-19 BAG 2 01-JAN-19 UMBRELLA 1 03-JAN-19 UMBRELLA 3 01-JAN-19 PERFUME 1 04-J
EMP_ID DATE_OF_PURCHASE ITEM_PURCHASED
------------------------------------------
1 01-JAN-19 BAG
2 01-JAN-19 UMBRELLA
1 03-JAN-19 UMBRELLA
3 01-JAN-19 PERFUME
1 04-JAN-19 PERFUME
我想把它汇总到表b中,如下所示
EMP_ID BAG UMBRELLA PERFUME
------------------------------------
1 YES YES YES
2 NO YES NO
3 NO NO YES
您可以使用条件聚合:
select emp_id,
max(case when item_purchased = 'BAG' then 'YES' else 'NO' end) as BAG,
max(case when item_purchased = 'UMBRELLA' then 'YES' else 'NO' end) as UMBRELLA,
max(case when item_purchased = 'PERFUME' then 'YES' else 'NO' end) as PERFUME
from t
group by emp_id;
您的日期格式建议使用Oracle。是一个Dfiddle,用于说明此工作。您可以使用条件聚合:
select emp_id,
max(case when item_purchased = 'BAG' then 'YES' else 'NO' end) as BAG,
max(case when item_purchased = 'UMBRELLA' then 'YES' else 'NO' end) as UMBRELLA,
max(case when item_purchased = 'PERFUME' then 'YES' else 'NO' end) as PERFUME
from t
group by emp_id;
您的日期格式建议使用Oracle。是一个用来说明这一工作原理的数据小提琴。试试这个:
select emp_id,
case when BAG = 1 then 'YES' else 'NO' end as BAG,
case when UMBRELLA = 1 then 'YES' else 'NO' end as UMBRELLA,
case when PERFUME = 1 then 'YES' else 'NO' end as PERFUME
FROM
(select emp_id,
max(case when item_purchased = 'BAG' then 1 else 0 end) as BAG,
max(case when item_purchased = 'UMBRELLA' then 1 else 0 end) as UMBRELLA,
max(case when item_purchased = 'PERFUME' then 1 else 0 end) as PERFUME
from t
group by emp_id);
干杯 试试这个:
select emp_id,
case when BAG = 1 then 'YES' else 'NO' end as BAG,
case when UMBRELLA = 1 then 'YES' else 'NO' end as UMBRELLA,
case when PERFUME = 1 then 'YES' else 'NO' end as PERFUME
FROM
(select emp_id,
max(case when item_purchased = 'BAG' then 1 else 0 end) as BAG,
max(case when item_purchased = 'UMBRELLA' then 1 else 0 end) as UMBRELLA,
max(case when item_purchased = 'PERFUME' then 1 else 0 end) as PERFUME
from t
group by emp_id);
干杯 谢谢您的帮助,但在三列中它都不会返回“否”。对于所有情况,这意味着对于所有物品购买者和一个物品购买者,您可以设置一个DBFIDLE或类似的工具吗?这意味着要么是一个非常神秘的排序规则,其中
'YES'<'NO'
(我甚至不知道是否存在)或者您购买的item_
值与问题中显示的值不完全相同。谢谢您的帮助,但在三列中返回NO,对于所有情况,这意味着对于所有物品购买者和一个物品购买者,您可以设置一个dbfiddle或类似的东西吗?这可能意味着要么是一个非常神秘的排序规则,其中'YES'
(我甚至不知道是否存在)要么你购买的物品的值与你在问题中所显示的值不完全相同。问题没有被Oracle标记,而解码
是特定的。问题没有被Oracle标记,而
解码是它特有的。