Sql postgres中over子句中的Where子句
是否可以在超限内使用where子句,如下所示Sql postgres中over子句中的Where子句,sql,postgresql,partitioning,greenplum,Sql,Postgresql,Partitioning,Greenplum,是否可以在超限内使用where子句,如下所示 SELECT SUM(amount) OVER(partition by prod_name WHERE dateval > dateval_13week) 由于我的日期不符合顺序,我不能使用前一个和后一个inside-over子句。 我只需要获取小于当前记录13周日期值的记录 EDIT : sum(CASE WHEN dateval >= dateval_13week and dateval <=current_row_dat
SELECT SUM(amount) OVER(partition by prod_name WHERE dateval > dateval_13week)
由于我的日期不符合顺序,我不能使用前一个和后一个inside-over子句。
我只需要获取小于当前记录13周日期值的记录
EDIT :
sum(CASE WHEN dateval >= dateval_13week and dateval <=current_row_dateval then amount else 0 end) over (partition by prod_name order by week_end desc)
您可以在
SUM
参数中模拟WHERE
:
SELECT SUM(CASE WHEN dateval > dateval_13week THEN amount ELSE 0 END)
OVER(partition by prod_name)
不能在OVER partition子句中使用WHERE子句筛选行。
您可以修复查询,只选择您需要的行,使用并执行满足条件的金额总和。添加到@D Stanley answer中,您可以在Postgre中使用聚合函数的筛选子句:
SELECT SUM(amount) FILTER (WHERE dateval > dateval_13week)
OVER(partition by prod_name)
@斯坦利。你能现在检查我的编辑吗?我想要我当前行日期与其13周前的日期之间的所有条目的总和。不仅仅是和它13周的价值相比。我的当前行日期值是我获取条目的引用
SELECT SUM(amount) FILTER (WHERE dateval > dateval_13week)
OVER(partition by prod_name)