【发布时间】:2021-10-28 12:15:47
【问题描述】:
我正在使用子查询来计算别名的总和,但它似乎返回错误的结果
我的桌子:
itm_code itm_name PACKING_STYLE TOTAL_QUANTITY
3211483 DEODORIZATION 1 32
3211484 DEODORIZATION FILTER 1 20
3211485 FILTER 30 30
3211486 FILTER-RO 8INCH(S) 30 30
这是我的食谱:
1. Full box = Integer of(total qty/ packing style)
2. Spare_box: via spare_quantity
spare_quantity = total_quantity - full_box * packing_style.
If spare_quantity = 0 => spare_box = 0
If spare_quantity > 0 => spare_box = 1
这是我的查询:
SELECT
l48.itm_code itmcd
, l48.itm_name itmname
, l48.PACKING_STYLE
, l48.TOTAL_QUANTITY
, FULLBOX
, SPARE_BOX
, SUM(FULLBOX + SPARE_BOX) AS TOTALBOX
from
log0048d l48
, ( SELECT
ROUND(SUM(l48.TOTAL_QUANTITY / l48.PACKING_STYLE)) AS FULLBOX
, CASE WHEN ROUND(SUM(l48.TOTAL_QUANTITY - (l48.TOTAL_QUANTITY/l48.PACKING_STYLE) * l48.PACKING_STYLE)) = 0 THEN 0
WHEN ROUND(SUM(l48.TOTAL_QUANTITY - (l48.TOTAL_QUANTITY/l48.PACKING_STYLE) * l48.PACKING_STYLE)) > 0 THEN 1
END AS SPARE_BOX
FROM log0048d l48 )
where 1 = 1
AND l48.reqst_no = 'SMO21071900398'
GROUP BY
l48.itm_code
, l48.itm_name
, l48.reqst_no_itm
, l48.PACKING_STYLE
, l48.TOTAL_QUANTITY
, FULLBOX
, SPARE_BOX
然后我收到的错误是:
itm_code itm_name PACKING_STYLE TOTAL_QUANTITY FULLBOX SPAREBOX TOTALBOX
3211483 DEODORIZATION 1 32 58 0 58
3211484 DEODORIZATION FILTER 1 20 58 0 58
3211485 FILTER 30 30 58 0 58
3211486 FILTER-RO 8INCH(S) 30 30 58 0 58
我预期的正确结果如下:
itm_code itm_name PACKING_STYLE TOTAL_QUANTITY FULLBOX SPAREBOX TOTALBOX
3211483 DEODORIZATION 1 32 32 0 32
3211484 DEODORIZATION FILTER 1 20 20 0 20
3211485 FILTER 30 30 1 0 1
3211486 FILTER-RO 8INCH(S) 30 30 1 0 1
我怎样才能得到预期的正确结果?
【问题讨论】: