SQL inner join小问题

目录

1.sql缩写代码如下。

2.排查一番,统计起来也是3w,我们一行行注释看。

3.注释掉TM_AREA表的连接,可以看到数据对的上,进一步确认问题出在tm_dealer_patrolman与TM_AREA关联数据上。

4.将TA.AREA改成现在的TP.AREA来看一下,发现问题所在。

5.我们统计值中有负数值,这个负数值没有标记AREA_ID,inner join左右连接条件都满足才会显示,我们找到tm_dealer_patrolman的这条null的数据。

6.给这条数据加上AREA_ID,再查看一下,这次数据对的上了。


问题描述:事情是这样,生产客户测试切换了上一个月的销售数量时,发现统计数据对不上。

1.sql缩写代码如下。

SELECT
  '全国' AREA_ID,
  SUM( TDD.TARGET ) TARGET,
  0 QTY,
  0 YOYQTY,
  0 YCYQTY 
 FROM
  TT_DEALER_DAYTARGET TDD 
 WHERE
  TDD.TARGET_DATE BETWEEN TO_DATE( '2020-06-01', 'yyyy-mm-dd' ) 
  AND TO_DATE( '2020-06-30', 'yyyy-mm-dd' )
 union all 
   SELECT
    TA.AREA_ID,
    SUM( TDD.TARGET ) TARGET,
    0 QTY,
    0 YOYQTY,
    0 YCYQTY 
   FROM
    TT_DEALER_DAYTARGET TDD
    INNER JOIN TM_DEALER_PATROLMAN TP ON TDD.DEALER_ID = TP.DEALER_ID
    INNER JOIN TM_AREA TA ON TP.AREA_ID = TA.AREA_ID 
   WHERE
    TDD.TARGET_DATE BETWEEN TO_DATE( '2020-06-01', 'yyyy-mm-dd' ) 
    AND TO_DATE( '2020-06-30', 'yyyy-mm-dd' ) 
   GROUP BY
    TA.AREA_ID

2.排查一番,统计起来也是3w,我们一行行注释看。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值