首页
学习
活动
专区
圈层
工具
发布

T-SQL求和
EN

Stack Overflow用户
提问于 2017-02-06 22:25:26
回答 2查看 48关注 0票数 0

我正在尝试创建包含3列的结果集。每一列来自表A的1列的总和,但按不同的ID分组。

代码语言:javascript
复制
Table A
ID       Val.1      
1          4
1          5
1          6
2          7
2          8
2          9
3         10
3         11   
3         12

我想创造一些像这样的东西..

代码语言:javascript
复制
ROW       SUM.VAL.1          SUM.VAL.2         SUM.VAL.3
1            15                 21                33

我知道我不能使用UNION,我正在考虑使用CTE,但逻辑上不太确定。

EN

回答 2

Stack Overflow用户

发布于 2017-02-06 22:27:43

您需要条件聚合

代码语言:javascript
复制
select 1 as Row,
       sum(case when ID = 1 then Val.1 end),
       sum(case when ID = 2 then Val.1 end),
       sum(case when ID = 3 then Val.1 end)
From yourtable 

如果ID's的数量不是静态的,您可能需要动态交叉表或透视表

代码语言:javascript
复制
DECLARE @col_list VARCHAR(8000)= Stuff((SELECT ',sum(case when ID = '+ Cast(ID AS VARCHAR(20))+ ' then [Val.1] end) as [val.'+Cast(ID AS VARCHAR(20))+']'
                    FROM   Yourtable
                    GROUP  BY ID
                    FOR xml path('')), 1, 1, ''),
        @sql      VARCHAR(8000) 

exec('select 1 as Row,'+@col_list +'from Yourtable')

票数 2
EN

Stack Overflow用户

发布于 2017-02-06 23:46:21

我认为旋转数据表将产生预期的结果。

代码语言:javascript
复制
IF OBJECT_ID('tempdb..#TableA') IS NOT NULL
    DROP TABLE #TableA

CREATE TABLE #TableA
(
    RowNumber INT, 
    ID INT,
    Value INT
)
INSERT #TableA VALUES (1, 1, 4)
INSERT #TableA VALUES (1, 1, 5)
INSERT #TableA VALUES (1, 1, 6)
INSERT #TableA VALUES (1, 2, 7)
INSERT #TableA VALUES (1, 2, 8)
INSERT #TableA VALUES (1, 2, 9)
INSERT #TableA VALUES (1, 3, 10)
INSERT #TableA VALUES (1, 3, 11)
INSERT #TableA VALUES (1, 3, 12)

-- https://msdn.microsoft.com/en-us/library/ms177410.aspx

SELECT RowNumber, [1] AS Sum1, [2] AS Sum2, [3] AS Sum3
FROM 
(
    SELECT RowNumber, ID, Value 
    FROM #TableA
) a
PIVOT
(
    SUM(Value)
    FOR ID IN ([1], [2], [3])
) AS p

如果您正在寻找的if是恒定的,则此技术有效,否则,如果需要更改if,我想一些动态sql也会起作用。

https://msdn.microsoft.com/en-us/library/ms177410.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42070090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档