You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询需求:获取所有门店记录(含无销售数据的门店)

问题与解决方案

现有表结构

T1(门店销售表)

Store  Sales  DateT
A01    100    01-01-22
B01    200    01-01-22
C01    300    01-01-22

T2(门店表)

CodeStore  Name
A01        Name1
B01        Name2
C01        Name3
D01        Name4

需求

查询所有门店的销售数据,即使门店在指定日期(01-01-22)没有销售记录,也要在结果中显示该门店,预期结果如下:

Store  Sales
A01    100
B01    200
C01    300
D01    

原SQL问题分析

你之前的SQL存在两个核心问题:

  1. 主表选择错误:使用T1 LEFT OUTER JOIN T2是以销售表T1为基础,只会返回有销售记录的门店,无法覆盖T2中所有门店。
  2. 过滤条件位置错误:WHERE DateT = '01-01-22'会直接过滤掉T2中无匹配销售记录的行(这类行的DateT为NULL,不满足等于条件),导致无销售的门店被排除。

正确SQL方案

SELECT 
    t2.CodeStore AS Store,
    COALESCE(SUM(t1.Sales), '') AS Sales
FROM T2
LEFT OUTER JOIN T1 
    ON t2.CodeStore = t1.Store 
    AND t1.DateT = '01-01-22'
GROUP BY t2.CodeStore

说明

  • 以T2作为主表做左连接,确保所有门店都能被查询到。
  • 将日期条件放到ON子句中,仅过滤T1中对应日期的销售数据,不会影响T2的完整门店列表。
  • 用COALESCE(SUM(t1.Sales), '')处理无销售记录的场景:当SUM结果为NULL时,返回空字符串,与预期结果格式一致。

内容的提问来源于stack exchange,提问作者HAMZA.SOUFIANE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 22:25:25