首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用sum语句时出现的group by函数问题

使用sum语句时出现的group by函数问题
EN

Stack Overflow用户
提问于 2019-05-23 10:47:18
回答 1查看 76关注 0票数 0

我向case when语句添加了一个sum语句,它触发了一个ORA-00937:不是一个单组组函数错误。

代码语言:javascript
运行
复制
 SELECT DISTINCT abc_value,
           COUNT (*) AS num_abc_values
    from   (
     select dsp_sku,
     sum(case
        when EXPTD_QTY <> ACTL_INVN_QTY then (EXPTD_QTY-ACTL_INVN_QTY)*(-1)
        else null
      end) as "Variance_"
    ,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 = '186-0106' then 'A'
        when dsp_sku = 'PM35MN02' then 'A'
     when dsp_sku = 'SIGC60MT' then 'B'
        when dsp_sku = 'GS833' then 'B'
        when dsp_sku = '5.5 PED' then 'B'
        when dsp_sku = 'L74' then 'B'
        when dsp_sku = 'VLOCL2105' then 'B'
        when dsp_sku = 'VLOCM0134' then 'C'
        when dsp_sku = '8886471021V' then 'C'
        when dsp_sku = 'SILSCLINCH46' then 'C'
     when dsp_sku = 'YCN1800P' then 'D'
        when dsp_sku = 'YCN1801P' then 'D'
        when dsp_sku = 'Y-REFACH-X-E' then 'D'
        when dsp_sku = 'ZL7777-0091' then 'D'
        else 'Empty Location'
      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 between '&FromDate' and '&ToDate'
    --and dsp_sku = '&SKU'
      --and not im.srl_nbr_reqd = 4
      --and EXPTD_QTY = 0
      --and actl_invn_qty = 0
      )
    GROUP BY ABC_Value, Dsp_sku
    --having count (Variance_) <>0;

我尝试重新编写我的group by,添加到group by,摆脱它,但都没有成功……

我现在让它计算ABC的值。我想让它对ABC的方差进行求和。我相信sum语句是正确的,但触发ORA错误...有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2019-05-23 13:14:32

我已经对您的脚本进行了调整并添加了注释。这可能不会直接给你想要的输出(你的部分需要更多的调整),但这会引导你走向你的目的地:)

代码语言:javascript
运行
复制
SELECT 
abc_value, --No DISTINCT required 
COUNT (*) AS num_abc_values,
SUM(Variance_) AS Variance_
FROM  
(
    SELECT 

    --dsp_sku,
    --SUM
    --(
    CASE
        WHEN EXPTD_QTY <> ACTL_INVN_QTY THEN (EXPTD_QTY-ACTL_INVN_QTY)*(-1)
        ELSE NULL
    END AS 'Variance_',
    --decode (cc.stat_code, '0', 'Unprocessed', '90', 'Processed', '99', 'Expired') as Status,
    --trunc(cc.create_date_time) CC_date,

    -- All above columns:  dsp_sku, Variance_, Status, CC_date has no impace on the Final output
    --So you can exclude them from the selection

    CASE
        WHEN dsp_sku IN('EGIA60AMT','LF1937','980X3ENDIUU','186-0106','PM35MN02') THEN 'A'
        WHEN dsp_sku IN ('SIGC60MT','GS833','5.5 PED','L74','VLOCL2105') THEN 'B'
        WHEN dsp_sku IN ('VLOCM0134','8886471021V','SILSCLINCH46') THEN 'C'
        WHEN dsp_sku IN ('YCN1800P','YCN1801P','Y-REFACH-X-E','ZL7777-0091') then 'D'
        ELSE 'Empty Location'
    END AS ABC_Value
    -- You can use IN operator instead of checking all values one by one.

    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 = 90
    AND cc.create_date_time BETWEEN '&FromDate' AND '&ToDate'
)
GROUP BY ABC_Value
--, Dsp_sku  
-- This group by is unnecessary as ABC_Value already created from this column's value
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56267431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档