группировка по функции при использовании оператора суммирования - PullRequest
0 голосов
/ 23 мая 2019

Я добавил оператор суммирования в случай, когда оператор и его запуск ORA-00937: не ошибка функции группы в одной группе.

 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;

Я попытался переписать мою группу, добавив ксгруппировать, избавиться от этого и все без везения ...

В настоящее время у меня есть подсчет значений ABC ... Я хочу, чтобы он затем суммировал количество отклонений для ABC AS WELL.Я считаю, что утверждение суммы правильно, но вызывает ошибку ORA ... какие-либо предложения ...?

1 Ответ

1 голос
/ 23 мая 2019

Я настроил и добавил комментарии к вашему сценарию. Возможно, это не даст вам желаемого результата напрямую (требуется дополнительная настройка с вашей стороны), но это приведет вас к месту назначения:)

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...