DB2查询中使用分区和总和的情况下的条件错误

时间:2019-01-24 22:38:04

标签: sql db2 db2-400

我正在尝试执行一些计算作为查询的条件(整个查询基于90天,但我希望某些计算仅考虑最近30天以及条件分组)

>

但是我下面的查询抛出一个错误,即有一个'``意外的'('期望FROM,INTO

以下是查询:

SELECT
  employee,
  manager,
  productGroup,
  productDetail,
  productCategory,
  productCount,
  quant as sales,

  /*problem starts below*/
  sum(case when last_date > current_date - 30 days then quant else 0 end) over (partition by employee) as emp_25,
  sum(case when last_date > current_date - 30 days then quant else 0 end) over (partition by manager) as manager_25,
  sum(case when last_date > current_date - 30 days then quant else 0 end) over (partition by p.productGroup) as productGroup_25

FROM PRODUCTS p
WHERE last_date > CURRENT_DATE - 90 days
ORDER BY manager,productGroup,productDetail,productCategory;

基本上我得到了逐项计数,但是我希望最后3个“ SUM”值返回列出的产品组的数量总和,该数量由雇员,经理分组,然后在过去30天总计

我的语法是否正确?

1 个答案:

答案 0 :(得分:1)

用于iSeries 7.2的Db2在其OLAP(aka窗口)表达式的实现中仅支持排名和行编号。

例如与本手册的Db2 for i 7.2对比

https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_72/db2/rbafzolapexp.htm

针对此页面的Db2 11.1(适用于LUW),该页面允许OLAP表达式中的列聚合功能

https://www.ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.sql.ref.doc/doc/r0023461.html