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



我使用TSQL从数据库中选择数据。我想选择表中的所有数据,但如果id是重复的添加(和)所有列'a'具有相同的id,并使其仅为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

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

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

供参考,这是聚合的工作方式:

当您对字段进行分组和聚合时,您将把记录合并到单行中。

在您的OP中,您希望看到ASUM对应于ID的每个值。这就是我发布的原始查询。

您还希望包含B,这是一个varchar字段,根据您的评论。

在这种情况下,您需要决定如何处理B。由于您将多行分组在一起,因此(可能)每个ID的值都有多个B的值。您需要:
  • B组,这将添加额外的行
  • MAX()MIN()等聚合应用于B
  • 从结果列表中排除B

最新更新