2017-09-21 274 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。