[英]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.