ビジネスインテリジェンスシステムを使用しており、日付のリストをロードして、「先週」または「過去12か月」または何らかの動的な値としてフラグを立てることができます。
文字列 '2014-01-01'から現在の日付までのすべての日付(1つの列に日付をリストするだけのテーブルを仮想的に生成する最も簡単な方法は何でしょうか(他の列はそこから数式を使用できます)。実際には、1年間の将来の日付を追加することもおそらく役立つでしょう。
さて、私は何千ものエントリを持つ別のランダムファクトテーブルから異なる日付を取得できますが、それはずさんなようで、実際には存在しないはずの依存関係を作成しています。
純粋なT-SQLを使用すると、次のことができます。
_;WITH cte AS
(
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 1)) - 1 AS [Incrementor]
FROM [master].[sys].[columns] sc1
CROSS JOIN [master].[sys].[columns] sc2
)
SELECT DATEADD(DAY, cte.[Incrementor], '2014-01-01')
FROM cte
WHERE DATEADD(DAY, cte.[Incrementor], '2014-01-01') < GETDATE();
_
または、これを少し簡単にするSQLCLR関数も作成しました。これは、無料バージョンの SQL# ライブラリで使用できます。
_SELECT [DatetimeVal]
FROM [SQL#].[Util_GenerateDateTimeRange]('2014-01-01', GETDATE(), 1, N'day');
_
終了日を将来の日付にしたい場合は、どちらかのクエリでGETDATE()
を置き換えます。
これを試して。
別のテーブルは必要ありませんが、持っている場合は役立ちます。