以下是我的sql,其中包含一个数据透视:
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
我想将数据透视表更改为以下内容:
for tmp.PollId in (select PollId
from Polls
where event_id = 100100
and isVisible = 1)) as pivot_table
我可以在一个存储过程中完成这一切,并动态地生成一个sql语句以提供给 execute()
声明,但我需要从一个Angular 来做这件事。
1条答案
按热度按时间ogsagwnx1#
也许我找错地方了,但我似乎找不到官方文件,实际上说这是做不到的。但经过数小时的实验和讨论,显然,这不能这样做。
@风神在评论中说得最好,
pivot子句的语法要求在查询设计时知道这些不同的值。所以你不能把它用在视图中
从逻辑上讲,这是有意义的,因为随着时间的推移,当我们向表中添加行时,它可能会动态地向视图结果中添加列。
感谢@damien\u the\u异教徒的进一步澄清,请参见此处:
https://docs.microsoft.com/en-us/sql/t-sql/queries/from-using-pivot-and-unpivot?view=sql-server-ver15#syntax