加入WHERE CLAUSE

时间:2017-09-21 23:38:42

标签: sql sql-server

我有这样的查询:

Select 
    Tbl1.field1, 
    count (*) as total
from Tbl1
LEFT JOIN Tbl2 on Tbl1.geoid=Tbl2.field1
LEFT JOIN Tbl3 L on Tbl2.Field2 = L.Field2
and Tbl2.[Current Original Listing Date] >= Convert(datetime, '2017-08-01' )
GROUP BY Tbl1.field1

Tbl1.field1有一个静态列表我需要输出整数而不管Tbl3的数量。

我的问题是,当我收紧where子句中的日期时,我期望count列中有更多的零,但是当计数变为零时,记录就会消失。

我错过了什么? 感谢。

1 个答案:

答案 0 :(得分:1)

将日期限制放在它引用的表的连接中:

SELECT
    Tbl1.field1, 
    count (*) as total
FROM Tbl1
LEFT JOIN Tbl2 ON Tbl1.geoid = Tbl2.field1
              AND Tbl2.[Current Original Listing Date] >= '20170801'
LEFT JOIN Tbl3 L on Tbl2.Field2 = L.Field2
GROUP BY Tbl1.field1

不确定为什么要加入tbl3,但如果需要,请加入它。

请注意,如果从文字中使用CONVERT()到日期时间,则应指定样式编号,否则您将依赖于服务器设置。否则,SQL Server中最安全的日期文字是YYYYMMDD,然后您不需要使用转换或强制转换。