2017-02-21 6 views
-2

私はSQLクエリに新しいです、私は以下のロジックに助けが必要です。
すべてのレコードを現在のシステム日付と一致させる必要があります。一致する場合はを表示し、Client_Codeに基づいて現在のシステム日付と一致しない場合は0を返します。SQL Serverクエリヘルプ4

表:

Client_Code | HolidayDate | Year 
------------+-------------+------ 
Testing | 2/15/2017 | 2017 
Testing | 3/12/2017 | 2017 
Testing | 5/23/2017 | 2017 
Testing | 6/12/2017 | 2017 
Testing | 7/9/2017 | 2017 
Unilever | 1/12/2017 | 2017 
Unilever | 2/17/2017 | 2017 
Unilever | 3/23/2017 | 2017 
Unilever | 2/21/2017 | NULL 

私は私がこの問題を解決するために助けてください

Client_Code | Status 
------------+---------- 
    Testing | 0 
    Unilever | 1 

のような出力を必要としています。あなたの応答に事前に感謝します。

+2

正確にシステム日付を意味しますか? – McNets

答えて

0

GETDATE()に一致するHollidayDateがある場合、すべてのClient_Codeを検索する必要があります。

注意「システム日付」としてGETDATE()を使用しました。 'YYYY-MM-DD HH:MM:ss.ttt'

SELECT c.Client_Code, 
      CASE WHEN COALESCE(t.HolidayDate,0) = 0 THEN 0 ELSE 1 END AS Status 
FROM  (SELECT Client_Code 
      FROM  YourTable 
      GROUP BY Client_Code) c 
LEFT JOIN YourTable t 
ON   t.Client_Code = c.Client_Code 
AND  t.HolidayDate = GETDATE(); 

更新

GETDATE()は、日時の値を返し確認する

の場合datetime1で=日付部分の日付部分

AND DATEADD(DAY, 0, DATEDIFF(DAY, 0, t.HolidayDate)) = DATEADD(DAY, 0, DATEDIFF(DAY, 0, GETDATE())) 

ORと同じ形式を使用して、varchar型の両方に変換します:

DATETIME2利用の
AND CONVERT(VARCHAR(20), t.HolidayDate, 112) = CONVERT(VARCHAR(20), GETDATE(), 112) 
+0

こんにちは、あなたの応答のためのおかげで..私は..以下のようにのようなあなたのクエリを変更 \t SELECT c.Client_Code、 \t \t \t CASE t.HolidayDateは=キャスト(日などGETDATE())、その後、他の1 0 '末端 \t C \t(Client_CodeてテーブルFROM \t \t \t基Client_Code \t \t \tを選択)からの状態はt.Client_Code = c.Client_Code \t AND t.HolidaのテーブルT \tをJOIN左yDate = GETDATE(); 出力: Client_Code \tステータス テスト uniliverは 私は今日の日付のレコードを持っている uniliverテスト ステータス Client_Code \t 以下のような出力が必要です。 テーブル: – Kumar

+0

@クマ答えを編集しました – McNets