2017-09-14 13 views
0

私が探しているのは、Figureが 'NULL'の場合、dateカラムにyesterdaysの日付を表示したい場合です。ケースステートメントを使用して値を挿入するSQL Server

   Date     Person  Team Figure 
    ------------------------------------------------------- 
    2017-09-01 00:00:00.000  Joe   1  NULL 
    2017-09-01 00:00:00.000  Tim   1  NULL 
    2017-09-01 00:00:00.000  Sam   1  NULL 
    2017-09-04 00:00:00.000  Ben   1  NULL 
    2017-09-04 00:00:00.000  Matt  1  NULL 
    2017-09-05 00:00:00.000  Alex  1  NULL 

結果:

   Date     Person  Team Figure 
    2017-09-13 00:00:00.000  Joe   1  NULL 
    2017-09-13 00:00:00.000  Tim   1  NULL 

私は

DECLARE @Yesterday DATETIME 
    SET @Yesterday = DateAdd(DD, DateDiff(DD, 0, GETDATE())-1, 0) 

    CASE WHEN D.[Figure] IS NULL THEN 
    @Yesterday 
    ELSE D.[DATE] END 

を試してみましたが、しかし、私はこのケースで日付の列でこれを変更するにはどうすればよい

Date      Person Team  Figure Month (No column name) 
    2017-09-01 00:00:00.000  Joe  1   NULL 1125 2017-09-13 00:00:00.000 
    2017-09-01 00:00:00.000  Alex  1   NULL 177  2017-09-13 00:00:00.000 

この結果を得ますステートメント?だからではなく、directely日付を選択する

+0

最初の文は、列の操作について説明しています。例では、除外された行が表示されます。私は混乱しています。 –

+0

ええ、私はすべてを含んでいませんでした。私はちょうど示していた - フィルタリングされたデータを無視します –

答えて

1

コードは、あなたがやっていることに対してやや複雑すぎるかもしれないと思います。私は単純に言う:

select case when DF.[Figure] is null 
     then DateAdd(day,-1,getdate()) 
     else DF.[Date] 
     end as [Date],... 
+0

これは基本的に私がすでに持っているものではありませんか? –

+0

単語selectの直後に置いて、Dateカラムを再度選択する必要はありません。 [Daily Figure]がnullの場合 'DF。[日常図]がNULLの場合の選択ケース DateAdd(day、-1、getdate()) else DF。[受注日] [Date]、Person 、チーム、フィギュアから... ' – Boydus

0

は、次のようにCASE式を使用する必要があります。

SELECT CASE WHEN D.[Figure] IS NULL THEN DATEADD(DAY, -1, GETDATE()) 
      ELSE D.[DATE] 
     END AS [Date], 
     Person, 
     Team, 
     Figure, 
     Month 
FROM Tbl AS D 
0

私は何を探していますが数字が「NULL」私はそれが昨日の日付を表示したいがあるときであります日付フィールドに入力します。

これはあなたが望むものであるならば、あなたはどうなる:

あなたの例のデータに基づいて
select . . ., 
     coalesce(figure, cast(getdate() - 1 as date)) as figure 

、私は、これはあなたが本当に欲しいものであるわからないんだけど、これはあなたが求めているものですために。

関連する問題