-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 回答
2

解决方案:

select cast(sum(distinct Num + cast(0.00001 as number(38,19))/ID) as number(18,2))
于 2012-11-18T16:14:07.130 回答