将匹配行的总和作为单独的字段返回

时间:2018-11-21 23:40:57

标签: sql sql-server

我想编写一个SQL查询,将字段C作为字段A中每个唯一行的字段B的总和。因此对于X,字段B具有10和35,因此字段C对于两行都应为45 X。

我需要一个查询,该查询将把整个结果作为一个“数据集”返回,如下所示(而不是只给我字段C的查询)。我想也许我需要2个查询?一个要获取A和B结果,然后是第二个查询以从结果中选择字段C的SUM( expression )?

enter image description here

3 个答案:

答案 0 :(得分:4)

您可以在像这样的子查询中使用窗口函数FooImportantInfo

SUM()OVER()

Here is a live demo

答案 1 :(得分:3)

看起来像Sami在我执行复制/粘贴时发布的:),但这是一个类似的解决方案:

Declare @test Table
    (
        a   varchar(10), 
        b   int
    )

Insert Into @test (a, b) Values ('X', 10);
Insert Into @test (a, b) Values ('Y', 15);
Insert Into @test (a, b) Values ('Z', 40);
Insert Into @test (a, b) Values ('X', 35);
Insert Into @test (a, b) Values ('Y', 10);

Select      t.a, t.b, (Select sum(sq.b) From @test sq Where sq.a = t.a) as c
From        @test t

答案 2 :(得分:2)

下面给出的查询就足够了。

select A,B, SUM(B) OVER(PARTITION BY A) AS C FROM TABLE