下面的SELECT語句是我使用來獲取其隨後被髮送到JSON數據存儲過程:TSQL如何指定PIVOT的列表範圍?
SELECT *
FROM (
SELECT CAST(DateTimeUTC as SmallDateTime) as [DateTime], DataValue, VariableID
FROM DataValues
WHERE SiteID = @siteID and VariableID BETWEEN 9 and 10 and DateTimeUTC >= DATEADD (day, @pastDays, getdate())
) TableDate
PIVOT (SUM(DataValue) FOR VariableID IN ([9],[10])) PivotTable ORDER BY [DateTime]
我想什麼來完成是修改程序來接受一列範圍樞。在上面的例子中,我只檢索兩個變量的值。如果我想檢索VariableID 1到10或1到50,該怎麼辦?必須有比其他的方式來獲取1到10的方式:
VariableID IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10])
MSDN上Using PIVOT and UNPIVOT沒有提到的方式來指定一個範圍。
我意識到可以在存儲過程中使用動態SQL,但考慮到我自己對SQL的瞭解以及那些必須保持這種長期的知識,我不願意通過使用動態SQL來引入額外的複雜性。這裏有一個概念上類似的問題,請參閱TSQL Pivot Long List of Columns,並用動態SQL解決方案回答。
可能重複的[SQL Server - 列未聚合行](http://stackoverflow.com/questions/14857737/sql-server-rows-to-columns-without-aggregation) – RichardTheKiwi