好的我一直在思考动态列的想法,我的意思是一个名为January
......的列表December
。
用户在运行时会选择一个月份范围,例如Feb
to July
。
我通常会从后面的代码中获取所有列,然后对我需要的和不需要的进行排序。
但我想知道一种在 SQL 中完成这一切的方法。
我知道 SQL 不支持数组(悲伤的脸),但还有其他选择。
所以我的问题是,是否有一种方法可以设置 SQL 查询,根据列名范围的参数动态选择多个列?
我看过一些动态查询,但它们只做 1 列。
我正在考虑将后面的代码提供的一串列作为 SQL 中的 1 参数传递,然后以某种方式迭代以选择每一列。
你们有什么感想?不能完成吗?可以做但是很乱?
编辑:以为我会提供一些代码,如您所见,我应用了一个数据透视查询并获得了一系列列(月)。到目前为止的建议是先规范化,然后再调整。
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