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