2017-09-21 229 views
1

我有这样的查询联接:与WHERE子句

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子句中收紧的日期,我希望有更多的零在计数列,但是当计数为零,记录消失。

我错过了什么? 谢谢。

+0

您可能需要显示这些表的样本数据和预期的结果 –

+0

您是否在运行,准确的查询,看到没有结果或者是你有一个where子句运行呢? Where子句和左连接可能会产生类似的结果内部联接(从而消除了一些行),但查询为你当前写入它不应该这样做。 – ZLK

+0

请添加sql来创建您的表格和模拟数据。 –

回答

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()到datetime,则应指定样式编号,否则您将依赖服务器设置。否则,SQL Server中最安全的日期文字是YYYYMMDD,然后你不需要使用convert或cast。