Sql postgres中over子句中的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

是否可以在超限内使用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_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)