我使用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中,您希望看到A
的SUM
对应于ID
的每个值。这就是我发布的原始查询。
您还希望包含B
,这是一个varchar
字段,根据您的评论。
B
。由于您将多行分组在一起,因此(可能)每个ID
的值都有多个B
的值。您需要:
- 由
B
组,这将添加额外的行 - 将
MAX()
、MIN()
等聚合应用于B
- 从结果列表中排除
B
。