使用COUNT()左联接

问题描述 投票:2回答:1

我有以下查询,给我有关StatsStrategySessions表的第二个JOIN / COUNT的问题:

SELECT 
      fa.Id
    , CAST(fa.StatDate AS DATE)
    , COUNT(sa.CreatedDateTime) AS 'TotalApplications'
    , COUNT(ss.CreatedDateTime) AS 'TotalStrategySessions'
FROM StatsFacebookAds fa 
LEFT JOIN StatsApplications sa
ON CAST(fa.StatDate AS DATE) = CAST(sa.CreatedDateTime AS DATE)
AND sa.LeadSourceId = 1
LEFT JOIN StatsStrategySessions ss
ON CAST(fa.StatDate AS DATE) = CAST(ss.CreatedDateTime AS DATE)
AND ss.LeadSourceId = 1
GROUP BY      
      fa.Id
    , fa.StatDate

它返回的两倍应该是的数量...

它返回...

  Id                     TotalApplications TotalStrategySessions
    ----------- ---------- ----------------- ---------------------
    1           2019-12-02 1                 1
    2           2019-12-03 0                 0
    3           2019-12-04 0                 0
    4           2019-12-05 4                 4

第二个JOIN / COUNT倍增至4,而不是原来的2。

当我在没有第二个JOIN / COUNT的情况下运行代码时,它按预期返回。

代码按预期运行。

SELECT 
      fa.Id
    , CAST(fa.StatDate AS DATE)
    , COUNT(sa.CreatedDateTime) AS 'TotalApplications'
FROM StatsFacebookAds fa 
LEFT JOIN StatsApplications sa
ON CAST(fa.StatDate AS DATE) = CAST(sa.CreatedDateTime AS DATE)
AND sa.LeadSourceId = 1
GROUP BY      
      fa.Id
    , fa.StatDate

它返回我期望的结果...

Id                     TotalApplications
----------- ---------- -----------------
1           2019-12-02 1
2           2019-12-03 0
3           2019-12-04 0
4           2019-12-05 2

但是一旦我加入第二张表,数字就不是我要显示的数字。

自从我写了tsql以来已经有一段时间了,希望我能在上面放置一些...

感谢您的协助!

tsql
1个回答
0
投票

[尝试在StatsApplications表上使用不同的计数:

© www.soinside.com 2019 - 2024. All rights reserved.