Eri*_*ric 5 sql sql-server pivot sql-server-2014
我只是想知道是否有任何方法可以使用动态列名称进行透视查询,而无需借助动态sql declare @sql_text varchar(max) = 'select ...'等。
动态SQL只是给我一种错误的方式。
基本上,我有一个这样的查询(而且我不得不更改所有表/列名来保护IP,因此,如果某个地方出现语法错误,请不要担心)
declare @sec_class_ids table (CLASS_ID varchar(50));
insert @sec_class_ids (CLASS_ID) values
('987987987'), -- END USER - SAVE AND EXPORT [987987987]
('654654654'), -- END USER - SAVE [654654654]
('321321321') -- 'END USER - SPECIAL - SAVE AND EXPORT [321321321]'
select * from (
select
class.NAME as sec_class_name,
sec_attr.NAME as sec_attr,
'YES' as granted
from sec_class class
inner join class_sec_attr
on class.class_id = class_sec_attr.class_id
inner join sec_attr
on sec_attr.sec_attr_id = class_sec_attr.sec_attr_id
inner join @sec_class_ids input
on input.class_id = class.class_id
) as sec_attrs
pivot (
max(sec_attrs.granted)
--for sec_attrs.sec_class_id in (@sec_class_ids)
for sec_points.sec_class_name in ([END USER - SAVE AND EXPORT],[END USER - SAVE],[END USER - SPECIAL - SAVE AND EXPORT])
) as sec_class_comparison
;
Run Code Online (Sandbox Code Playgroud)
我希望能够使用表var (在注释中显示),而不是手动为每个查询设置列。我知道使用动态SQL可以做到这一点,而且非常容易,但是我想尽可能避免这样做。
| 归档时间: |
|
| 查看次数: |
1458 次 |
| 最近记录: |