[英]Dynamic pivot in SQL Server 2000 without using stored procedure or function
[英]SQL Pivot: Can I make the pivot list dynamic without using stored proc?
這是我的 SQL 包含一個 pivot:
select * from (
select
[event_id]
,[attnum]
,PollId
,PollResponseDisplayText
from
[dbo].[v_PollReportDetails2]
) as tmp
pivot (max(tmp.[PollResponseDisplayText])
for tmp.PollId in ([703],[805],[806],[807],[808],[809])) as pivot_table
我想將 pivot 列表更改為如下所示:
for tmp.PollId in (select PollId
from Polls
where event_id = 100100
and isVisible = 1)) as pivot_table
我可以在存儲過程中完成這一切並動態生成 SQL 語句以輸入到execute()
語句中,但我需要能夠在視圖中執行此操作。
也許我在尋找錯誤的地方,但我似乎無法找到實際上說這無法完成的官方文檔。 但經過數小時的試驗和討論,顯然,這不能這樣做。
@aeoluseros 在他的評論中說得最好,
PIVOT 子句的語法要求在查詢設計時知道這些不同的值。 所以你不能在視圖中使用它
從邏輯上講,這是有道理的,因為隨着時間的推移我們向表中添加行時,它可能會動態地將列添加到視圖結果中。
感謝@Damien_The_Unbeliever 的進一步說明,請參見此處:
https://docs.microsoft.com/en-us/sql/t-sql/queries/from-using-pivot-and-unpivot?view=sql-server-ver15#syntax
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.