Ich frage mich nur, ob es eine Möglichkeit gibt, eine Pivot-Abfrage, mit dynamischen Spaltennamen zu tun, ohne zu dynamischem SQL greifen (declare @sql_text varchar(max) = 'select ...'
etc.)Dynamische Pivot-Spalten ohne dynamische SQL-Anweisung?
dynamischer SQL reibt mir nur in die falsche Richtung.
Im Grunde habe ich eine Abfrage wie folgt (und ich hatte alles Tabelle/Spaltennamen ändern IP zu schützen, damit, wenn es Störung eine Syntax ist irgendwo keine Sorge darüber)
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
;
Ich würde gerne die Tabelle var(im Kommentar angezeigt) anstatt die Spalten für jede Abfrage manuell festlegen können. Ich bin mir bewusst, dass dies mit Dynamic SQL möglich und recht einfach ist, aber ich möchte das vermeiden, wenn es irgendwie möglich ist.
Haben Sie versucht, eine SELECT-Unterabfrage ('in (SELECT DesiredColumn FROM @TableName)') in der kommentierten Zeile statt nur 'in (@TableName)'? –
@TabAlleman PIVOT erlaubt das nicht in seiner Syntax. – Taryn
@tab ja ich habe das versucht, kein Würfel. – Eric