【发布时间】:2012-01-20 01:44:32
【问题描述】:
我有这个查询:
select
C.One
,C.Two
,C.Three
,C.Four
from mytable C
where C.One = 11052 and C.Three = 97734
这会返回:
One |Two | Three | Four
11052 2 97734 4
11052 2 97734 4
11052 2 97734 4
11052 2 97734 4
11052 2 97734 4
11052 2 97734 4
11052 2 97734 4
11052 2 97734 4
11052 2 97734 4
11052 2 97734 4
11052 1 97734 4
11052 1 97734 4
11052 1 97734 4
11052 1 97734 4
11052 1 97734 4
11052 1 97734 4
11052 1 97734 4
11052 1 97734 4
11052 1 97734 4
11052 1 97734 4
11052 3 97734 4
11052 3 97734 4
11052 3 97734 4
11052 3 97734 4
11052 3 97734 4
11052 3 97734 4
11052 3 97734 4
11052 3 97734 4
11052 3 97734 4
11052 3 97734 4
11052 4 97734 4
11052 4 97734 4
11052 4 97734 4
11052 4 97734 4
11052 4 97734 4
11052 4 97734 4
11052 4 97734 4
11052 4 97734 4
11052 4 97734 4
11052 4 97734 4
11052 5 97734 4
11052 5 97734 4
11052 5 97734 4
11052 5 97734 4
11052 5 97734 4
11052 5 97734 4
11052 5 97734 4
11052 5 97734 4
11052 5 97734 4
11052 5 97734 4
抱歉,粘贴太长了,因为您可以看到每个“第二列”值(1、2、3、4、5 为 10 倍)总共 50 行,每一行重复 10 次。
2)
如果这样写:
select
C.One
,C.Two
,C.Three
,C.Four
,sum(c.Four) as 'Sum'
from mytable C
where C.One = 11052 and C.Three = 97734
group by C.One, C.Two,C.Three , C.Four
导致:
One | Two | Three | Four | Sum
11052 1 97734 4 40
11052 2 97734 4 40
11052 3 97734 4 40
11052 4 97734 4 40
11052 5 97734 4 40
总和应该是 20 (4+4+4+4+4) 但它是 40,因为在 previuos 查询中重复 4 次是 10 倍。 (上)。
我应该结束
One | Two | Three | Four | Sum
11052 1 97734 4 20
11052 2 97734 4 20
11052 3 97734 4 20
11052 4 97734 4 20
11052 5 97734 4 20
我应该怎么做才能解决这个问题并获得 20 而不是 40?希望很清楚。感谢您的宝贵时间。
【问题讨论】:
标签: sql sql-server sum aggregate alias