繁体   English   中英

使用 UNION ALL 运算符获取忽略 null 的结果

[英]Get result ignoring null using UNION ALL operator

这是我的代码:

select TRANSACTIONID, INFORMATION as "C_cntct", NULL as "C_nam"
from RETAILTRANSACTIONINFOCODETRANS as t
where INFOCODEID = 1009 and TRANSDATE = '2022-07-20'

UNION

select TRANSACTIONID, NULL, INFORMATION
from RETAILTRANSACTIONINFOCODETRANS as t
where INFOCODEID = 1010 and TRANSDATE = '2022-07-20'
group by TRANSACTIONID, INFORMATION
order by TRANSACTIONID, INFORMATION desc

我得到的结果是:

交易ID C_cntct C_nam
ST-EMP-ST-LHR-01-66079 拉希德·阿里 NULL
ST-EMP-ST-LHR-01-66079 NULL 0321-9439143
ST-EMP-ST-LHR-01-66080 萨达夫塞哈 NULL
ST-EMP-ST-LHR-01-66080 NULL 0345-4036448

但我想要这个结果,用 Null 忽略:

交易ID C_cntct C_nam
ST-EMP-ST-LHR-01-66079 拉希德·阿里 0321-9439143
ST-EMP-ST-LHR-01-66080 萨达夫塞哈 0345-4036448

听起来您需要条件聚合(又名 Pivot),尽管没有样本输入数据很难确定。

通常只使用MIN(CASE WHEN更简单,而不是使用显式的PIVOT语法,这是相当有限的。

SELECT
  trans.TRANSACTIONID,
  MIN(CASE WHEN trans.INFOCODEID = 1009 THEN trans.INFORMATION END) AS C_cntct,
  MIN(CASE WHEN trans.INFOCODEID = 1010 THEN trans.INFORMATION END) AS C_nam
FROM RETAILTRANSACTIONINFOCODETRANS AS trans
WHERE trans.INFOCODEID IN (1009, 1010)
  AND trans.TRANSDATE = '2022-07-20'
GROUP BY
  trans.TRANSACTIONID
ORDER BY
  trans.TRANSACTIONID;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM