gpt4 book ai didi

sql - 多列求和

转载 作者:行者123 更新时间:2023-12-03 00:44:12 25 4
gpt4 key购买 nike

我有一个包含 N 列的表格。

我想要每列的总和:

 SELECT
id
, SUM(X1) as X1
, SUM(X2) as X2
, SUM(X3) as X3
............
FROM test

但是我不想列出所有列,因为列太多了。

有没有办法对 SQL Server 中的每一列求总和?

最佳答案

您可以使用 SQL Server 执行此操作:

设置测试架构

create table p (id int, x1 int, x2 int, x3 int);

insert into p values
(1,1,0,1),
(2,1,1,0),
(3,1,0,1),
(1,1,1,1);

现在是 SQL

declare @stmt as nvarchar(600);

set @stmt =
(
select concat('select id,', (
SELECT LEFT(column_names , LEN(column_names )-1) AS column_names
FROM information_schema.columns AS extern
CROSS APPLY
(
SELECT concat('sum(',column_name , ') as ', column_name,',')
FROM information_schema.columns AS intern
WHERE extern.table_name = intern.table_name and column_name <> 'ID'
FOR XML PATH('')
) pre_trimmed (column_names)
where table_name = 'p'
GROUP BY table_name, column_names
),
' from p group by id')
);


execute sp_executesql @stmt;

如果您添加一百个其他列,它应该可以工作。

您基本上构建一个 SQL 查询字符串,然后执行它。

这里的关键是我假设您有一个 ID 列,然后是所有 Xn 列。因此,如果您有另一个引用列(例如 name),您不想求和,则可以将 Information_Schema 查询更改为 'and column_name not in ('id','name' ) 等等

如果这也很麻烦,您可以在内部 select 中添加一个 where 子句,以仅对 Int 类型的列进行求和。

Here is a working example

关于sql - 多列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39575883/

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