首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将值组合在SQL中并将NULL移除到一行中

将值组合在SQL中并将NULL移除到一行中
EN

Stack Overflow用户
提问于 2018-03-01 22:51:09
回答 1查看 166关注 0票数 1

我在DB2中有以下查询,需要将带有值的行和带有空值的行组合到一行中,当该列有有效数据时,最终删除空值。

SQL是

代码语言:javascript
复制
select z.po_id, scdc.ship_id, dcdc.ship_id, scus.ship_id, dcus.ship_id

from covinfos.ibm_plant_order z

left join COVINFOS.IPO_LINE_TO_CASE A ON z.po_id = a.po_id

left JOIN COVINFOS.SHIPMENT scus ON (A.SHIP_ID = scus.SHIP_ID AND A.SHIP_TO_LOC_CODE = scus.SHIP_TO_LOC_CODE and scus.loc_type = 'CUS')

left join COVINFOS.SHIPMENT_EVENT dcus ON (scus.SHIP_ID = dcus.SHIP_ID_856 AND scus.SHIP_TO_LOC_CODE = dcus.SHIP_TO_LOC_CD856 
AND dcus.SHIP_EVNT_CD = 'D')

left JOIN COVINFOS.SHIPMENT scdc ON (A.SHIP_ID = scdc.SHIP_ID AND A.SHIP_TO_LOC_CODE = scdc.SHIP_TO_LOC_CODE and scdc.loc_type = 'CDC')

left join COVINFOS.SHIPMENT_EVENT dcdc ON (scdc.SHIP_ID = dcdc.SHIP_ID_856 AND scdc.SHIP_TO_LOC_CODE = dcdc.SHIP_TO_LOC_CD856 
AND dcdc.SHIP_EVNT_CD = 'D')

where

z.po_id = 'BQG546'

结果如下图所示。

我希望只看到1行,按PO_ID分组,并仅在适用时显示非空值(如果该列都有类似于第3列的空值,那么它将以null结尾)

我使用QMF for Workstation z/OS V11.1 Fix 3来运行这个查询。我尝试了XMLCAST,但不确定我是否正确地使用了它。这个客户端似乎不支持LISTAGG。然后,我想在Cognos中实现它,这样它就可以再次工作了。

有人知道怎么解决这个问题吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-01 23:07:12

只需使用聚合:

代码语言:javascript
复制
select z.po_id, max(scdc.ship_id), max(dcdc.ship_id), max(scus.ship_id), max(dcus.ship_id)
from . . .
group by z.po_id;

每个列中似乎最多只有一个非空值,因此max()就足够了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49059972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档