どちらの解決策が良いのだろうか。ビューでいくつかの変数を宣言する必要があります。これらの変数は、T-SQLの日付関数(DATEADD、DATEPART、GETDATE()など)を使用して計算されます。
いくつかの調査の後、私はこれを書きました:
WITH DatePeriods(ThisWeek,LastWeek,MonthToDate,QuarterToDate,YearToDate) AS
(
SELECT "...date functions..." AS ThisWeek
"...date functions..." AS LastWeek
"...date functions..." AS MonthToDate
"...date functions..." AS QuarterToDate
"...date functions..." AS YearToDate
)
SELECT Desciption,Value
FROM DatePeriods
UNPIVOT
(
Value FOR Desciption IN (ThisWeek,LastWeek,MonthToDate,QuarterToDate,YearToDate)
) AS Source
そして、私は「cte」と「unpivot」を持っているので、それはクールに見えます。他の日付変数を追加したい場合は、CTEの選択にのみ挿入する必要があります。
そして、もう1つの解決策は、通常の「ユニオン」を使用することです。
SELECT 'ThisWeek',"...date functions..." AS ThisWeek
UNION
SELECT 'LastWeek',"...date functions..." AS LastWeek
UNION
SELECT 'MonthToDate',"...date functions..." AS MonthToDate
UNION
SELECT 'QuarterToDate',"...date functions..." AS QuarterToDate
UNION
SELECT 'YearToDate',"...date functions..." AS YearToDate
新しい日付変数は新しい結合を意味するので、あまり良くないと思いますが、結局のところ、いくつかの変数間の結合のみです。
この場合、どのテクニックが良い習慣であるか、あるいは他の解決策を提供するかを誰かに教えてもらえますか?
前もって感謝します。
編集:
これは私が望む出力です:
Desciption Value
ThisWeek 2012-08-05 08:55:23.013
LastWeek 2012-07-29 08:55:23.013
MonthToDate 2012-07-08 08:55:23.013
QuarterToDate 2012-05-08 08:55:23.013
YearToDate 2011-08-08 08:55:23.013