我在SQL Server上有以下表格:
ID Num
1 A
2 B
2 B
3 C
3 C
4 C
(Num
是一个数字列 - 出于此问题的目的,A,B和C是数值的替换值)
如何在不使用子查询和CTE的情况下获取A+B+C+C
的值?
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。
答案 0 :(得分: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;
答案 1 :(得分:2)
解决方案:
select cast(sum(distinct Num + cast(0.00001 as number(38,19))/ID) as number(18,2))