我有这样的疑问:
(一)
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
很抱歉粘贴了很长时间,您可以看到,对于每个"列2"值,每行都重复了10次(对于1、2、3、4、5为10次),总共50行。
(二)
如果我这样写:
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
Sum应该是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?谢谢你的时间。
3条答案
按热度按时间6ju8rftf1#
您可以使用子查询完成此操作:
qyyhg6bp2#
试试这个:
mctunoxg3#
我假设您使用的是SQL Server 2008及以上版本,如果没有请评论。
您试图从
myTable
中获取5个唯一行;我们称之为tempResult
。然后为所有要追加列的唯一行追加列。
此列是
tempResult
中Four
列的总和。对于每一行,它将具有相同的值。