ビューを作成する必要があります。ビューは5つのUNIONALLステートメントで構成されています。各ステートメントの違いは、データが異なる期間でフィルター処理されることです。
例えば:
SELECT RecordName
,CASE
WHEN RecordDate > DATEADD(WEEK,-1,GETUTCDATE()) THEN 'This week'
END
UNION ALL
SELECT RecordName
,CASE
WHEN RecordDate > DATEADD(WEEK,-2,GETUTCDATE()) THEN 'Previos week'
END
SELECT RecordName
,CASE
WHEN RecordDate > DATEADD(Year,-1,GETUTCDATE()) THEN 'Year ago'
END
次に、ビューを使用してピボットを作成しています。
とにかく、「日付」条件はより複雑な方法で計算されます。私もGETUTCDATE()関数を使用していますが、これはミリ秒ごとに異なる値を返します。
そのため、すべての日付条件変数を初期化するため、またはCTEで1回だけ計算を実行し、次にこの日付条件をSELECT-UNION句で使用するために、CTE式を使用したいと思います。
問題は、CTEからの情報を以下のSELECTステートメントで結合できず、日付条件を直接(結合せずに)使用しようとすると、機能しません(「エラー-無効な列名」)。
これは私がやろうとしていることの例です:
WITH DatePeriods(ThisWeek,LastWeek,MonthToDate,QuarterToDate,YearToDate) AS
(
SELECT DATEADD(WEEK,-1,GETUTCDATE()) AS ThisWeek
,... AS LastWeek
,... AS MonthToDate
,... AS QuarterToDate
,DATEADD(YEAR,-1,GETUTCDATE()) AS YearToDate
)
SELECT RecordName
,CASE
WHEN RecordDate > ThisWeek THEN 'This week'
END
UNION ALL
SELECT RecordName
,CASE
WHEN RecordDate > LastWeek THEN 'Previos week'
END
SELECT RecordName
,CASE
WHEN RecordDate >YearToDate THEN 'Year ago'
END