【问题标题】:SQL Server: SUM values where other value is distcintSQL Server:其他值不同的 SUM 值
【发布时间】:2013-10-18 20:48:12
【问题描述】:

我有一个 2 列的表,1 是 id,其他是 int。

如何对唯一 ID 的整数求和?

Eg 
Id Value
1 2
1 2
2 2
3 2
2 2
3 2

Result: 6 (2+2+2)

【问题讨论】:

  • 不清楚你在问什么。如果您没有完成所有Values 2,我们可能有更多机会解决您的需求。 this sample data 的期望结果是什么?为什么?
  • 您的结果没有意义。数据中的所有 id 都不是唯一的。如果你只是说你只想从其中一个中求和 int 值,当存在​​多个时,你如何决定选择哪一个?每个在 int 列中可能有不同的值。
  • 道歉,澄清一下; id 不是唯一的,但与它们关联的值始终相同,因此您可以通过区分假设您不会冒删除某些数据的风险的 id,例如所有 id=1 将具有 value=2。它总是会减少到 1=2, 2=2, 3=2

标签: sql sql-server sum subquery


【解决方案1】:
select sum(int)
from mytab t where not exists
   (select * from mytab 
    where id = t.id
    group by id
    having count(*) > 1)

【讨论】:

    【解决方案2】:

    假设如果一个 Id 在表中出现多次,它具有相同的值,那么以下应该有效:

    SQL Fiddle

    SELECT Sum(T.Value) FROM 
    (
      SELECT DISTINCT M.Id, M.Value FROM MyTable AS M
    )AS T 
    

    但是,如果 ID 相同的记录中的值可能不同,那么您将不得不以不同的方式进行处理。在下面的示例中,我只提取最高值:

    SQL Fiddle

    SELECT Sum(T.Value) FROM 
    (
      SELECT DISTINCT M.Id, 
      (
        SELECT TOP(1) MV.Value 
        FROM MyTable AS MV 
        WHERE MV.Id = M.Id 
        ORDER By MV.Value DESC
      ) AS Value 
      FROM MyTable AS M
    )AS T 
    

    【讨论】:

      猜你喜欢
      • 2016-10-15
      • 1970-01-01
      • 1970-01-01
      • 2020-12-30
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多