-1

SQL Server に次のテーブルがあります。

ID   Num
 1     A
 2     B
 2     B
 3     C
 3     C
 4     C

(Numは数値列です。この質問では、A、B、および C は数値の代用です)

A+B+C+Cサブクエリと CTE を使用せずに値を取得する方法は?

A - 1 の場合、B - 2 の場合、C - 3 の場合、C - 4 の場合。

答えは のように見えますsum(distinct Num)が、異なるのは ID フィールドです!

デモ テーブル:

create table test (ID int, Num int);
insert into test values (1, 10);
insert into test values (2, 100);
insert into test values (2, 100);
insert into test values (3, 1000);
insert into test values (3, 1000);
insert into test values (4, 1000);

正解は 10+100+1000+1000 = 2110 です。

4

2 に答える 2

2

無意味なサブクエリ制限を回避するために CTE を使用したランダムな推測:

With X as (Select Distinct Id, No From Test)

Select
  Sum(No) 
From X

または派生テーブルを使用する (SQL 2000 で動作):

Select
  Sum(No)
From (
  Select Distinct
    Id,
    No
  From
    Test
) a;

http://sqlfiddle.com/#!3/77a6e/6

于 2012-11-18T00:22:56.643 に答える