我正在嘗試SUM使用CASEORACLE SQL 中的a 分組,但這似乎不起作用:
SUM(A11.NEW_MRP_QTY) OVER (CASE WHEN A11.STOCK_TYPE = 'C' THEN 'INVENTORY'
WHEN A11.STOCK_TYPE = 'L' THEN 'INTRANSIT PO'
WHEN A11.STOCK_TYPE = 'B' THEN 'PO AT FACTORY'
WHEN (A11.STOCK_TYPE = 'A' AND A11.POR_ORDER_TYPE = 'CO') THEN 'PO AT FACTORY'
WHEN (A11.STOCK_TYPE = 'A' AND A11.POR_ORDER_TYPE <> 'CO') THEN 'NOT BOUGHT'
WHEN A11.STOCK_TYPE = ' ' THEN 'BLANK STOCK TYPE'
ELSE 'CHECK')
END AS 'SUPPLY_QTY'
關于我做錯了什么的任何想法?謝謝。
uj5u.com熱心網友回復:
這就是您現在擁有的(有些簡化并應用于 Scott 的示例emp表,因為我沒有您的表,也沒有您發布任何示例資料):
SQL> select sum(sal) over (case when deptno = 10 then 'A'
2 when deptno = 20 then 'B'
3 else 'C'
4 end) as supply_qty
5 from emp;
select sum(sal) over (case when deptno = 10 then 'A'
*
ERROR at line 1:
ORA-00907: missing right parenthesis
SQL>
為什么會出錯?因為over部分功能是錯誤的。它不能只有那個case運算式,您缺少partition by和/或order by(請參閱第 1 行),例如
SQL> select sum(sal) over (partition by case when deptno = 10 then 'A'
2 when deptno = 20 then 'B'
3 else 'C'
4 end) as supply_qty
5 from emp;
SUPPLY_QTY
----------
8750
8750
8750
10875
10875
10875
10875
10875
9400
9400
9400
9400
9400
9400
14 rows selected.
SQL>
我不知道你要在這里做什么,但上面至少應該指出你正確的方向(以及人們發表的評論)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/314334.html
