选择数据,如果重复id添加(求和)数据

时间:2011-10-07 18:34:59

标签: sql tsql select distinct case

我正在使用TSQL从数据库中选择数据。我想选择表中的所有数据但是如果id是重复的,则添加(sum)所有具有相同ID的列'a'并使其仅为1行。

输出中应该没有重复的ID。

    SELECT DISTINCT id,a,b FROM dbo.test WHERE 
   id not in (select id from dbo.test) CASE a WHEN a + a?? 

示例:

dbo.test
========
id  a  
1   4  
1   5 
2   3
3   2

output:

1 9 <-- two ids of 1 so column 'a' is added together.
2 3
3 2

1 个答案:

答案 0 :(得分:5)

SELECT ID, SUM(a) as a, SUM(b) as B
FROM MyTable
GROUP BY ID

这就是分组和聚合的目的!

仅供参考,汇总的工作原理如下:

分组和汇总字段时,您将记录合并为一行。

在您的操作系统中,您希望SUM的每个值都A ID。这就是我发布的原始查询所做的。

您还希望根据您的评论添加B varchar字段。

在这种情况下,您需要决定如何处理B。由于您要将多个行组合在一起,因此每个值B(可能)有多个ID值。你需要:

  • 也可以B分组,这将添加额外的行
  • MAX()MIN()等汇总应用于B
  • 从结果列表中排除B