gpt4 book ai didi

sql - 如何动态计算GROUP中多列的总和?

转载 作者:行者123 更新时间:2023-12-03 01:13:26 26 4
gpt4 key购买 nike

在下表中,我有可变数量的列,该数字在 1000 左右。我需要对按人员姓名分组的 1000 列中每一列的所有值求和。因此,史密斯的总得分为 test_score_1,总得分为 test_score_2,...总得分为 test_score_1000。然后是Jacksontest_score_1、总test_score_2、...总test_score_1000

我事先不知道“test_score_n”列的数量,而且它们总是在变化。

因此给出这张表:

name      test_score_1 test_score_2 ...  test_score_1000
smith 2 1 0
jackson 0 3 1
jackson 1 1 2
jackson 3 0 3
smith 4 5 1

如何生成下表?

name      test_score_1 test_score_2 ...  test_score_1000
smith 6 6 1
jackson 4 4 6

最佳答案

SQL 生成 SQL

DECLARE @generatedSQL nvarchar(max);

SET @generatedSQL = (

SELECT
'SELECT ' +
SUBSTRING(X.foo, 2, 2000) +
'FROM ' +
QUOTENAME(SCHEMA_NAME(t.schema_id)) + '.' + QUOTENAME(t.name) +
' GROUP BY name' --fix this line , edited
FROM
sys.tables t
CROSS APPLY
(
SELECT
', SUM(' + QUOTENAME(c.name) + ')'
FROM
sys.columns c
WHERE
c.object_id = t.object_id
AND
c.name <> 'Name'
FOR XML PATH('')
) X (foo)
WHERE
t.name = 'MyTable'
);

EXEC (@generatedSQL);

关于sql - 如何动态计算GROUP中多列的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45373363/

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