我已经编写了下面的SQL脚本,但仍在为将两行合并为一行而努力。
编辑25.05.2023
第一个脚本从表TB.ORDER.O导出数据。订单类型有SHIPPED_ORDER和RETURN_ORDER两种。
select
O.ISSUE_ID "Case ID",
O.ORDER_ID,
O.ORDER_TYPE
from
TB.ORDER O
where
O.CREATED_DATE > '01-Jul-20'
and O.ORDER_TYPE in ('SHIPPED_ORDER','RETURN_ORDER')
| 病例ID|订单类型|订单ID|
| - -----|- -----|- -----|
| 案例1|发货订单|已发货订单AAA|
| 案例1|返回订单|退回订单AAB|
| 案例二|发货订单|已发货订单CCC|
| 案例二|返回订单|退回订单CCD|
我需要转换成两列的订单类型,所以我写了下面的脚本:
SELECT
O.ISSUE_ID "Case ID",
O.ORDER_TYPE,
CASE
WHEN O.ORDER_TYPE = 'SHIPPED_ORDER' THEN O.ORDER_ID
END AS SHIPPED_ORDER,
CASE
WHEN O.ORDER_TYPE = 'RETURN_ORDER' THEN O.ORDER_ID
END AS RETURN_ORDER
from
TB.ORDER O
where
O.CREATED_DATE > '01-Jul-20'
and O.ORDER_TYPE in ('SHIPPED_ORDER','RETURN_ORDER')
这是我目前得到的结果:
| 病例ID|发货订单|返回订单|
| - -----|- -----|- -----|
| 案例1|已发货订单AAA||
| 案例1||退回订单AAB|
| 案例二|已发货订单CCC||
| 案例二||退回订单CCD|
这就是我想要的:
| 病例ID|发货订单|退货订单|
| - -----|- -----|- -----|
| 案例1|已发货订单AAA|退回订单AAB|
| 案例二|已发货订单CCC|退回订单CCD|
我已经尝试使用CASE
表达式,如代码所示,但它仍然不能按我想要的那样工作。
1条答案
按热度按时间exdqitrt1#
应用聚合:
MAX
聚合函数将允许空值被非空值吸收。请记住将选定的非聚合列添加到GROUP BY
子句中。输出:
| 问题ID|发货订单|返回订单|
| - -----|- -----|- -----|
| 案例1|已发货订单AAA|退回订单AAB|
| 案例二|已发货订单CCC|退回订单CCD|
查看演示here。