【发布时间】:2016-01-29 15:19:40
【问题描述】:
使用 over (partition by) 编写聚合函数的正确语法是什么?
或者这怎么可能被重写?我没有一些示例表,因为我将其作为自己的练习。我想知道这是否可能。请在下面找到我正在考虑的场景。
我们以一个简单的例子为例:
select
*,
sum (column1 * column2) over (partition by column10, colum12)/100 as sumProduct
into #myTemp
from myTable
上面的查询适用于具有这些列的表。
现在,我怎样才能为column1 和column2 的不同值编写相同的内容?
下面的查询不起作用,但它是我想要实现的伪。
预期的结果非常简单(参见distinct column1 * distinct column2)
select
*,
sum (distinct column1 * distinct column2) over (partition by column10, colum12)/100 as sumProduct
into #myTemp
from myTable
编辑:我想避免group by。我正在尝试尽可能多地使用分区,以便在窗口功能方面做得更好
【问题讨论】:
-
你不能在windows功能中与众不同。首先在 cte 中做一个 distinct 然后应用你的函数。
-
聚合或窗口函数——除了
COUNT()——不应使用DISTINCT。
标签: sql sql-server tsql sql-server-2012 window-functions