簡體   English   中英

計算字段的SUM()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM