-3

2列のテーブルがあり、1つはIDで、もう1つはintです。

一意の ID の int を合計するにはどうすればよいですか?

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

Result: 6 (2+2+2)
4

2 に答える 2

1
select sum(int)
from mytab t where not exists
   (select * from mytab 
    where id = t.id
    group by id
    having count(*) > 1)
于 2013-10-18T20:58:04.570 に答える
1

Id がテーブルに複数回存在する場合、同じ値を持つと仮定すると、次のように動作するはずです。

SQL フィドル

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

ただし、ID が同じであるレコード間で値が異なる可能性がある場合は、別の方法で処理する必要があります。次の例では、一番上の値のみを取得しています。

SQL フィドル

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 
于 2013-10-18T20:49:13.307 に答える