[英]SUM() of calculated field
我有這個查詢:
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
很抱歉使用長粘貼,因為您可以看到每一行對每個“第二列”值重復10次(對於1、2、3、4、5,每行10次)總計50行。
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,因為在之前的查詢中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個? 希望清楚。 謝謝你的時間。
您可以使用子查詢來完成此操作:
select a.One,a.Two,a.Three,a.Four,sum(a.Four) as 'Sum'
from (select C.One,C.Two,C.Three,C.Four
from mytable C
where C.One = 11052 and C.Three = 97734
group by C.One, C.Two,C.Three , C.Four) a
嘗試這個:
select
DISTINCT C.Two
,C.One
,C.Three
,C.Four
,sum(c.Four) as 'Sum'
from mytable C
where C.One = 11052 and C.Three = 97734
group by C.Two,C.One,C.Three,C.Four
我假設您使用的是SQL Server 2008及更高版本,否則請發表評論。
您正在嘗試從myTable
獲得5個唯一的行; 我們稱之為tempResult
。
然后,對於所有要添加的唯一行。
此列是tempResult
Four
列的總和。
每行的值相同 。
select
One,
Two,
Three,
Four,
sum(Four) over (order by One,Two,Three,Four asc) as SumAll
from
(
select distinct
C.One,
C.Two,
C.Three,
C.Four,
from mytable C
where
C.One = 11052 and
C.Three = 97734
) g
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.