【发布时间】:2021-03-16 10:40:20
【问题描述】:
我有一个表格,想计算总和如下:
表 LOG0104M:
PRODUCT_CODE TOTAL_QUANTITY PACKING_STYLE QUANTITY_IN_FULL_CTN
112677 1 30 1
111202 1 80 1
我的查询:(已更新)
SELECT
log04.PRODUCT_CODE,
log04.TOTAL_QUANTITY,
log04.PACKING_STYLE,
log04.QUANTITY_IN_FULL_CTN,
/*
SUM(TOTAL_QUANTITY + PACKING_STYLE) AS FULLBOX,
SUM(TOTAL_QUANTITY - QUANTITY_IN_FULL_CTN) AS SPAREBOX,
SUM(FULLBOX + SPAREBOX) AS BOX
*/
SUM(TOTAL_QUANTITY * 2 + PACKING_STYLE - QUANTITY_IN_FULL_CTN) AS BOX1
FROM
LOG0104M log04
GROUP BY
log04.PRODUCT_CODE
我想对 'FULLBOX' 和 'SPAREBOX' 求和,但出现以下错误:
/* SQL Error [904] [42000]: ORA-00904: "SPAREBOX": invalid identifier */
SQL Error [979] [42000]: ORA-00979: not a GROUP BY expression
如何解决问题
【问题讨论】:
-
是的,我明白了,我会改变它
-
你不能这样做......要么将它包装在 CTE 中,然后引用它们,要么只是扩展表达式。总和(TOTAL_QUANTITY * 2 + PACKING_STYLE - QUANTITY_IN_FULL_CTN)。在某些情况下您可以(例如在 group by 子句中),但不是这样。
-
嗨@Hambone 我希望你能给我更多的细节
-
@Hambone:我已经尝试过你的建议,它发生了一个错误:SQL 错误 [937] [42000]:ORA-00937:不是单组函数
-
呃......这对于评论来说很难看,但似乎并不需要扩展答案。 CTE = 公用表表达式。
with box_query as ( <<your query here>> ) select b.*, b.fullbox + b.sparebox as box from box_query b