SQL查询如何实现加仑数为0的客户记录在结果中正常显示
问题背景
- 现有SQL查询结果缺失2条客户记录,缺失记录对应客户的加仑数为0,需要这类零值记录正常展示在查询结果中
- 实际查询结果与期望结果参考:

- 原有SQL逻辑存在过滤错误,直接排除了所有0加仑相关记录
问题根因
原有SQL两层过滤逻辑直接拦截了0加仑记录:
- 主查询WHERE子句写死
trx.gallons > 0,直接过滤掉所有加仑数为0的交易行 - 额外添加的
NOT IN子查询,将所有存在0加仑交易的卡号全部排除,完全阻断了零值记录的返回路径
修正后SQL代码
select cust.name, count(distinct trx.CardNumber) as Count, p.Description, trx.locationid, cust.custid, trx.MembersMemLPI, p.PrgLPI from P2P_Monthly_Trx_TEMP trx inner join P2P_Programs p on trx.MembersMemLPI = p.prglpi left outer join P2P_Customer cust on trx.locationid = cust.custid where trx.MembersMemLPI = '231' group by cust.name, p.Description, trx.locationid, cust.custid, trx.MembersMemLPI, p.PrgLPI order by cust.name ASC;
调整说明
- 删除主查询中
trx.gallons > 0的过滤条件,允许加仑数为0的交易记录进入统计逻辑 - 整段删除原有
NOT IN子查询逻辑,该逻辑与展示零值记录的需求完全冲突 - 为多表共名字段补充表别名前缀,避免关联查询时的字段歧义报错
内容的提问来源于stack exchange,提问作者Smartguy21
相关产品推荐
相关产品推荐

