我想挑选一份客户名单,列出他们的总购买量。
PURCHY_AMOUNT的总和不能包括‘VOID’和‘FAILED’状态金额
目前,我有如下所示的SQL脚本,但没有显示状态为“失败”和“无效”的客户。
我哪里做错了?
脚本:
SELECT C.CUSTOMER_ID, C.NAME, NVL(SUM(AMOUNT), 0) AS PURCHASE_AMOUNT
FROM CUSTOMER C
LEFT JOIN TRANSACTION T ON T.CUSTOMER_ID = C.CUSTOMER_ID
WHERE T.STATUS NOT IN('Void', 'Failed')
GROUP BY C.CUSTOMER_ID, C.NAME;
实际结果:
预期结果:
2条答案
按热度按时间gudnpqoy1#
WHERE子句中条件
T.STATUS NOT IN('Void', 'Failed')
的存在有效地将事务表的左联接转换为内联接,因为如果WHERE子句中的条件不满足,则不能接受任何行。要将T.STATUS...
条件视为左连接的一部分,它必须出现在连接本身的ON子句中:voase2hg2#
您可以在SELECT PART中用CASE检查‘T.STATUS’,而不是在WHERE子句中检查它。