【发布时间】:2020-11-02 22:22:28
【问题描述】:
我正在使用 SQL Workbench/J 并希望创建两列“web_sales”和“app_sales”(参见案例语句),将 sales2019 和 sales2020 表中的销售数据结合起来。但是,我当前的代码仍然显示特定项目/成员组合的 2 条记录,这取决于数据是否来自 2019 或 2020 表。如何将 2019 年和 2020 年的数据合并到一条记录中(请参阅所需的输出)?存在于子查询之外的 group by 语句无法完成此操作。
select *
from (
select id
,item
,member
,SUM(CASE WHEN platform = 'web' THEN revenue ELSE 0 END) AS web_sales
,SUM(CASE WHEN platform = 'app' THEN revenue ELSE 0 END) AS app_sales
from sales2019
group by id, item, member
union
select id
,item
,member
,SUM(CASE WHEN platform = 'web' THEN revenue ELSE 0 END) AS web_sales
,SUM(CASE WHEN platform = 'app' THEN revenue ELSE 0 END) AS app_sales
from sales2020
group by id, item, member) A
group by A.id, A.item, A.member
order by A.item asc;
电流输出:
id item member web_sales app_sales
2 desk-blue y 132.5 374.6
2 desk-blue n 348.9 2597.9
2 desk-blue y 753.1 2209.9
2 desk-blue n 23.3 234.9
3 desk-brown y 245.4 271.2
3 desk-brown n 192.4 5295.8
3 desk-brown n 1.6 776.5
期望的输出:
id item member web_sales app_sales
2 desk-blue y 885.6 2584.5
2 desk-blue n 372.2 2832.8
3 desk-brown y 245.4 271.2
3 desk-brown n 194.0 6072.3
【问题讨论】:
标签: sql group-by subquery union