このCASE文を変数として設定しようとしていますが、同じ日付が列に繰り返されています。この特定のCASEステートメントは夏時間の調整です。他のクエリでも使用していますが、一番上に変数を1つだけ持つことでこれらのクエリを短縮したいと考えています。SQL CASE変数
DECLARE @newdate as Datetime
SELECT @newdate =
CASE WHEN
(a.REQDATE BETWEEN '2014-11-02' AND '2015-03-08'
OR a.REQDATE BETWEEN '2015-11-01' AND '2016-03-13'
OR a.REQDATE BETWEEN '2016-11-06' AND '2017-03-12'
OR a.REQDATE BETWEEN '2017-11-05' AND '2018-03-11'
OR a.REQDATE BETWEEN '2018-11-04' AND '2019-03-10')
THEN CONVERT(datetime,SWITCHOFFSET(CONVERT(datetimeoffset,a.REQDATE),'-08:00'))
ELSE CONVERT(datetime,SWITCHOFFSET(CONVERT(datetimeoffset,a.REQDATE),'-07:00'))
END
FROM TABLE a inner join TABLE b on a.REQDATE = b.REQDATE
SELECT
@newdate, b.REQDATE --control column
FROM TABLE b
結果:
(No column name) | REQDATE
2016-04-08 13:00:52.000 | 2015-11-02 15:41:25.000
2016-04-08 13:00:52.000 | 2016-02-02 10:25:54.000
2016-04-08 13:00:52.000 | 2016-02-11 12:59:10.000
私はこれにいくつかの詳細情報を追加してみましょう。これにより
SELECT
CASE WHEN (b.REQDATE BETWEEN '2014-11-02' AND '2015-03-08'
OR b.REQDATE BETWEEN '2015-11-01' AND '2016-03-13'
OR b.REQDATE BETWEEN '2016-11-06' AND '2017-03-12'
OR b.REQDATE BETWEEN '2017-11-05' AND '2018-03-11'
OR b.REQDATE BETWEEN '2018-11-04' AND '2019-03-10')
THEN CONVERT(datetime,SWITCHOFFSET(CONVERT(datetimeoffset,b.REQDATE),'-08:00'))
ELSE CONVERT(datetime,SWITCHOFFSET(CONVERT(datetimeoffset,b.REQDATE),'-07:00')) END AS "DateOpened"
FROM TABLE
:私は、次のコードを交換したい
SELECT
@newdate
FROM TABLE
は、基本的にはその代わり@newDate変数のCASE文
...関数にその場合ステートメントを移動しています。特にあなたの質問は何ですか? – dave
'@ newdate'は単一値の変数です。複数の値を保持することはできません。 –