gpt4 book ai didi

SQL Server - 查询以检索列名和列总和

转载 作者:行者123 更新时间:2023-12-04 12:46:22 24 4
gpt4 key购买 nike

查询有困难。我有一个名为 products 的表,其中包含大量列,如下所示:

 X  |  Y  |  Z  | ... (and on)
----+-----+-----+
4 | 9 | 4 |
5 | 2 | 6 |
2 | 5 | 9 |

然后我想开发一个查询来输出列名及其总和,如下所示:

ProductName  |  Quantity
-------------+-----------
X | 11
Y | 16
Z | 19
...

有什么想法吗?

提前致谢

最佳答案

当然 UNPIVOT 和动态 SQL 可能会更高效,但以下将“动态地”反透视和聚合您的数据。

请注意,这会将行转换为 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

如果它有助于子查询生成的可视化:

enter image description here

关于SQL Server - 查询以检索列名和列总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46434442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com