0

私は SQL Server 2008 を使用しており、ResidencyStatus であるテーブルに計算列を作成しました。ResidencyStatus で datediff を使用する 現在の日付 (現在の日付) と他の日付列 ResidencyDate との違いを知りたいです。

  • ここで、結果が 183 日以下 (6 か月以下) の場合、ResidencyStatus に文字列 'Transient' を入れたいと思います。

  • 結果が 184 日以上 (6 か月と 1 日以上) かつ 1825 日以下 (4 年と 364 日以下) の場合、値は「移民」になります。 '。

  • 結果が 1826 日以上 (5 年以上) の場合、値は「居住者」になります。

計算列でこの式を使用してみました:

(case when (datediff(day,[ResidencyDate],getdate()))<=183 then 'Transient' elseif (datediff(day,[ResidencyDate],getdate())>=184 and <=1825 then 'Migrant' elseif (datediff(day,[ResidencyDate],getdate())>=1826 then 'Resident' end

...しかし、このエラーは「ResidencyStatus 列の数式の検証中にエラーが発生しました」というエラーが発生します。この式を機能させる方法、または別の解決策を教えてください。

4

2 に答える 2

1

これを試して。

  select 
  ....
  CASE
     WHEN ( Datediff(day, [ResidencyDate], Getdate()) ) <= 183 THEN 'Transient'
     WHEN Datediff(day, [ResidencyDate], Getdate()) >= 184
          AND Datediff(day, [ResidencyDate], Getdate()) <= 1825 THEN 'Migrant'
     ELSE 'Resident'
   END
  .....
  .....

または使用Between

  select 
  ....
  CASE
     WHEN ( Datediff(day, [ResidencyDate], Getdate()) ) <= 183 THEN 'Transient'
     WHEN Datediff(day, [ResidencyDate], Getdate()) Between 184 and 1825 THEN 'Migrant'
     ELSE 'Resident'
   END
  .....
  .....
于 2014-11-20T02:24:17.310 に答える