簡體   English   中英

SQL Pivot:我可以在不使用存儲過程的情況下使 pivot 列表動態化嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM