Oracle 我想把它和ABC的价值加起来
我试过一个总结,但没有任何建议?Oracle 我想把它和ABC的价值加起来,oracle,Oracle,我试过一个总结,但没有任何建议? 这是查询的较小版本,原始查询有更多行ABC case when语句。如果我理解正确,那将是 select distinct dsp_sku ,decode (cc.stat_code, '0', 'Unprocessed', '90', 'Processed', '99', 'Expired') as Status, trunc(cc.create_date_time) CC_date, case when dsp_sku =
这是查询的较小版本,原始查询有更多行ABC case when语句。如果我理解正确,那将是
select distinct
dsp_sku
,decode (cc.stat_code, '0', 'Unprocessed', '90', 'Processed', '99', 'Expired') as Status,
trunc(cc.create_date_time) CC_date,
case
when dsp_sku = 'EGIA60AMT' then 'A'
when dsp_sku = 'LF1937' then 'A'
when dsp_sku = '980X3ENDIUU' then 'A'
when dsp_sku = 'VP521X' then 'B'
when dsp_sku = 'FT6009' then 'B'
when dsp_sku = '125037' then 'B'
when dsp_sku = 'CG925' then 'C'
when dsp_sku = 'SPGR101351' then 'C'
when dsp_sku = 'CL14MG' then 'C'
when dsp_sku = '603011825' then 'D'
when dsp_sku = '603011827' then 'D'
when dsp_sku = '603011828' then 'D'
else null
end as ABC_Value
from WH_GHC1.CYCLE_COUNT_HIST cc
left join item_master im on
im.sku_id = cc.sku_id
inner join locn_hdr lh on
lh.locn_id = cc.locn_id
where
cc.whse = 'PH3'
--and cc.stat_code in ('0','90') --stat_code: 0 is unprocessed, 90 is processed, 99 is expired
and cc.stat_code = 90
--and cc.stat_code = 0
--and cc.create_date_time between '&FromDate' and '&EndDate'
and
cc.create_date_time > '&StartDate'
--and dsp_sku = '&SKU'
--and not im.srl_nbr_reqd = 4
--and EXPTD_QTY = 0
--and actl_invn_qty = 0
您没有要求和的数字列,因此我假设您希望计算每种类型的
abc_值的数量
,然后您只需要将查询嵌套在另一个查询中,您可以执行分组依据
:
SELECT dsp_sku,
DECODE (cc.stat_code,
'0', 'Unprocessed',
'90', 'Processed',
'99', 'Expired')
AS status,
TRUNC (cc.create_date_time) cc_date,
CASE
WHEN dsp_sku = 'EGIA60AMT' THEN 'A'
WHEN dsp_sku = 'LF1937' THEN 'A'
WHEN dsp_sku = '980X3ENDIUU' THEN 'A'
WHEN dsp_sku = 'VP521X' THEN 'B'
WHEN dsp_sku = 'FT6009' THEN 'B'
WHEN dsp_sku = '125037' THEN 'B'
WHEN dsp_sku = 'CG925' THEN 'C'
WHEN dsp_sku = 'SPGR101351' THEN 'C'
WHEN dsp_sku = 'CL14MG' THEN 'C'
WHEN dsp_sku = '603011825' THEN 'D'
WHEN dsp_sku = '603011827' THEN 'D'
WHEN dsp_sku = '603011828' THEN 'D'
ELSE NULL
END
AS abc_value, --
COUNT (*) --> this
FROM ...
GROUP BY dsp_sku,
DECODE (cc.stat_code,
'0', 'Unprocessed',
'90', 'Processed',
'99', 'Expired'),
TRUNC (cc.create_date_time),
CASE
WHEN dsp_sku = 'EGIA60AMT' THEN 'A'
WHEN dsp_sku = 'LF1937' THEN 'A'
WHEN dsp_sku = '980X3ENDIUU' THEN 'A'
WHEN dsp_sku = 'VP521X' THEN 'B'
WHEN dsp_sku = 'FT6009' THEN 'B'
WHEN dsp_sku = '125037' THEN 'B'
WHEN dsp_sku = 'CG925' THEN 'C'
WHEN dsp_sku = 'SPGR101351' THEN 'C'
WHEN dsp_sku = 'CL14MG' THEN 'C'
WHEN dsp_sku = '603011825' THEN 'D'
WHEN dsp_sku = '603011827' THEN 'D'
WHEN dsp_sku = '603011828' THEN 'D'
ELSE NULL
END;
选择abc\u值,
将(*)计数为num_abc_值
从(
)
按abc_值分组
您想做什么?如前所述,听起来你想把一堆字母相加。请包括样本数据和样本预期输出,并编辑问题,以便我们更好地了解您需要帮助的具体内容。我为每个SKU分配了一封信。如何将A值b等的总数相加?如何添加另一列以仅计算差异?我使用case when语句计算差异{case when EXPTD\u QTY ACTL\u INVN\u QTY then(EXPTD\u QTY-ACTL\u INVN\u QTY)*(-1)我如何添加一列将它们相加…?否则null end as variance}将这两列添加到大查询的输出中(这可能会影响DISTINCT
子句中的行数),然后在外部查询中使用sum(exptd\U qty actl\U invn\U qty then…end时的情况)作为variance
。但是,这超出了你在这里提出的问题的范围,因此如果它不能完全满足你的要求,那么你需要就这一点提出一个新的问题,因为它与这个问题无关。
SELECT abc_value,
COUNT(*) AS num_abc_values
FROM (
<your_large_query>
)
GROUP BY abc_value