假设我在SQL Server中有一个表格,如下所示:
MyTable:
Col1: Col2: Col3: Val1: Val2:
1 2 a 1 1
1 2 a 1 1
1 2 b 1 1
1 2 b 1 1
1 2 c 1 1
1 2 c 1 1
所以,我希望创建一个返回的查询:
Sum(Val1)
基于Col1
,Col2
和Col3
AND
Sum(Val2)
基于Col1
,Col2
仅所以,我提出了以下可以实现此目的的查询:
with MyData as
(
select distinct
Col1
, Col2
, Col3
, sum(Val1) over(partition by Col1, Col2, Col3) as Value1,
, sum(Val2) over(partition by Col1, Col2) as Value2
from
MyTable
)
Select * from MyData
产生以下内容:
Result:
Col1: Col2: Col3: Value1: Value2:
1 2 a 2 6
1 2 b 2 6
1 2 c 2 6
这很有效,但由于Distinct
,它似乎非常低效 - 是否有更好的方法来实现这一目标?
谢谢!
答案 0 :(得分:1)
我不会将DISTINCT描述为非常低效的#34;而不是,我认为没有更好的方式""达到理想的效果。