で
おかげで確かに、おそらくUNPIVOTと動的SQLは、よりパフォーマンスの高いだろうが、以下は、「動的」アンピボットおよび集計yourdataます。
これはXMLに行を変換していることに注意してください、そして、それはに役立つ場合はNULL値が
例
Select ProductName = C.Field
,Quanity = sum(C.Value)
From YourTable A
Cross Apply (values (cast((Select A.* for XML RAW) as xml))) B(XMLData)
Cross Apply (
Select Field = a.value('local-name(.)','varchar(100)')
,Value = a.value('.','int') --<< Change to desired data type
From B.XMLData.nodes('/row') as C1(n)
Cross Apply C1.n.nodes('./@*') as C2(a)
Where a.value('local-name(.)','varchar(100)') not in ('FieldsTo','Exclude')
) C
Group By C.Field
戻り
ProductName Quanity
X 11
Y 16
Z 19
を除外されますしてください可視化により、サブクエリが生成されます。
ヒント:ピボット.... – scsimon
は動的か列挙されていますか? –
scsimon +/- 10kカラム。ヒントに感謝し、それを掘り下げようとしています。 RadimBaca、fixed – schustda