わかりました私は動的列のアイデアを熟考してきました.これが意味するのは、名前の付いた列のテーブルJanuary
ですDecember
.
ユーザーは実行時にtoなどの月の範囲を選択します。Feb
July
私が通常行うことは、コード ビハインドからすべての列を取得し、必要なものとそうでないものを並べ替えることです。
しかし、これをすべてSQLで行う方法を考えていました。
SQLが配列をサポートしていないことは知っていますが(悲しい顔)、代替手段があります。
私の質問は、列名の範囲であるパラメーターに応じて、いくつかの列を動的に選択する SQL クエリを設定する方法はありますか?
いくつかの動的クエリを見てきましたが、それらは 1 列しか実行しません。
私は、コードビハインドによって提供された列の文字列をSQLの1つのパラメーターとして渡し、その後、何らかの方法で反復して各列を選択するという方針に沿って考えています。
皆さんはどう思いますか?できませんか?できますが、面倒ですか?
EDIT:ピボットクエリを適用して列の範囲(月)を取得することがわかるように、いくつかのコードを提供すると思いました。これまでに提案されているのは、まず正規化してからピボットすることです。
SELECT
[1] January ,
[2] February,
[3] March,
[4] April,
[5] May,
[6] June,
[7] July,
[8] August,
[9] September,
[10] October,
[11] November,
[12] December
FROM
(
SELECT MONTH(Convert(datetime,[lasttaken],120)) as months, complete
FROM #Temp WITH(NOLOCK)
) d
pivot
(
count(complete)
for months in ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])
) p