2017-09-21 3 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とleft joinは内部結合に似た結果を生み出すかもしれません(したがって、いくつかの行を削除します)。しかし、あなたが現在書いているようなクエリはそれを行うべきではありません。 – 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に参加するが、それが必要な場合は、それを含めている理由はわかりません。

リテラルからdatetimeにCONVERT()を使用する場合は、サーバーの設定に依存している場合はスタイル番号を指定する必要があります。それ以外の場合は、SQL Serverで最も安全な日付リテラルがYYYYMMDDであるため、convertまたはcastを使用する必要はありません。