逐行中的值的总和,并且还选择结果集中的其他列

时间:2015-09-13 10:21:39

标签: sql sql-server sql-server-2008

我目前的查询如下:

select id, quantity, c, d
from table1;

这将给我示例数据如下:

id | quantity | c | d
---------------------
1  |    1     | x | y
1  |    3     | x | y
2  |    1     | x | y
2  |    1     | x | y

但是我想按ID分组,得到数量总和如下:

id | quantity | c | d
---------------------
1  |    4     | x | y
2  |    2     | x | y

我尝试修改我的第一个查询,在ID上包含一个group by和数量的总和:

select id, sum(quantity), c, d
from table1
group by id;

但是我收到错误,因为其他2列不是group by子句的一部分。我怎么能包括它们?

2 个答案:

答案 0 :(得分:2)

简单地将它们添加到group by子句中:

select id, sum(quantity), c, d from table1 group by id, c, d;

答案 1 :(得分:1)

使用OVER子句在这里有意义:

select id, SUM(quantity) OVER (PARTITION BY id), c, d 
from table1

不要忘记获得明显的结果。 如果你有多个c,d的组合,你需要明确说明你要选择哪一个。