Группировка по справке - Oracle SQL - PullRequest
0 голосов
/ 05 ноября 2018

Как бы я внедрил группу к этому?

Попробовал просто сгруппировать все по выбору, и это не похоже на работу.

 SELECT SL.ORDER_NO,
   SL.HANDLING_UNIT_ID,
   HUS.MANUAL_GROSS_WEIGHT,
   SL.OBJVERSION,
         ACCOUNTING_PERIOD_API.GET_PERIOD_DESCRIPTION(SITE_API.GET_COMPANY(SHIPMENT_API.GET_CONTRACT(HUS.SHIPMENT_ID)),
                                                                                                    ACCOUNTING_PERIOD_API.GET_CURR_ACC_YEAR(SITE_API.GET_COMPANY(SHIPMENT_API.GET_CONTRACT(HUS.SHIPMENT_ID))),
                                                                                                    ACCOUNTING_PERIOD_API.GET_CURR_ACC_PERIOD(SITE_API.GET_COMPANY(SHIPMENT_API.GET_CONTRACT(HUS.SHIPMENT_ID)))) ACC_DESC,
         HUS.WIDTH,
         HUS.HEIGHT,
         HUS.DEPTH,
         SL.QUANTITY * IFSAPP.HANDLING_UNIT_API.GET_TARE_WEIGHT(HUS.HANDLING_UNIT_ID, HUS.UOM_FOR_WEIGHT) TOTAL_WEIGHT_KGS,
         HUS.HANDLING_UNIT_TYPE_ID CASE_NOS,
         HUS.WIDTH * HUS.HEIGHT * HUS.DEPTH DIMENSIONS,
         HUS.WIDTH * HUS.HEIGHT * HUS.DEPTH * 3 / 1000000 TOTAL_CUBE_BOX
    FROM   SHIPMENT_LINE_HANDL_UNIT SL
    JOIN   HANDLING_UNIT_SHIPMENT_CFV HUS
    ON     HUS.SHIPMENT_ID = SL.SHIPMENT_ID
   JOIN   SHIPMENT S
   ON     S.SHIPMENT_ID = SL.SHIPMENT_ID
   JOIN   CUSTOMER_ORDER CO
   ON     CO.ORDER_NO = S.ORDER_NO
   WHERE  SHIPMENT_API.GET_STATE(HUS.SHIPMENT_ID) = 'Completed'
         AND SHIPMENT_API.GET_CONTRACT(HUS.SHIPMENT_ID) = '1314'
   AND SL.HANDLING_UNIT_ID = HUS.HANDLING_UNIT_ID
   AND S.SHIP_VIA_CODE = 'SEA'
   AND CO.REGION_CODE = 'AM'

Ожидаемые данные:

Shiptrain7       1  102 102 111x93x106  RPL111x93x106   93     111   106      3.28


Shiptrain7       1  57  57  111x93x106  RPL111x93x106   93     111   106      3.28


Shiptrain8      1   150 150 111x93x106  RPL111x93x106   93     111   106      3.28

Shiptrain8      1   2   2   35x26x33        RPL35x26x33 26     35      33        3.28

Current result

В каждом случае есть только один случай, идентификатор единицы обработки связан с каждым случаем. Это приносит действительный идентификатор, а не количество каждого случая, которое равно 1. Кроме того, это используется в отчете о кристалле, поэтому игнорируйте поля, которые не нужны.

1 Ответ

0 голосов
/ 05 ноября 2018

Вы хотите GROUP BY все в проекции, кроме handling_unit_id, которое вы просто хотите посчитать. Вы можете изменить существующий запрос, но у вас есть большое количество производных столбцов, что сделает предложение GROUP BY сложным и ломким.

Таким образом, вы должны заключить существующий запрос в другой запрос, который вы можете использовать для агрегирования. Обратите внимание, что вы должны указать псевдоним для каждого столбца в запросе.

select order_no
       , count(handling_unit_id) as no_of_units
       , manual_gross_weight
       , objversion
       ,  acct_period_description
        ,  acct_period
       , acc_desc
       , width
       , height
       , depth
       , total_weight_kgs
       , case_nos
       , dimensions
        , total_cube_box
from (
     SELECT SL.ORDER_NO,
       SL.HANDLING_UNIT_ID,
       HUS.MANUAL_GROSS_WEIGHT,
       SL.OBJVERSION,
       ACCOUNTING_PERIOD_API.GET_PERIOD_DESCRIPTION(SITE_API.GET_COMPANY(SHIPMENT_API.GET_CONTRACT(HUS.SHIPMENT_ID)) as  acct_period_description,
       ACCOUNTING_PERIOD_API.GET_CURR_ACC_YEAR(SITE_API.GET_COMPANY(SHIPMENT_API.GET_CONTRACT(HUS.SHIPMENT_ID))) as acct_period,
       ACCOUNTING_PERIOD_API.GET_CURR_ACC_PERIOD(SITE_API.GET_COMPANY(SHIPMENT_API.GET_CONTRACT(HUS.SHIPMENT_ID)))) ACC_DESC,
             HUS.WIDTH,
             HUS.HEIGHT,
             HUS.DEPTH,
             SL.QUANTITY * IFSAPP.HANDLING_UNIT_API.GET_TARE_WEIGHT(HUS.HANDLING_UNIT_ID, HUS.UOM_FOR_WEIGHT) TOTAL_WEIGHT_KGS,
             HUS.HANDLING_UNIT_TYPE_ID CASE_NOS,
             HUS.WIDTH * HUS.HEIGHT * HUS.DEPTH DIMENSIONS,
             HUS.WIDTH * HUS.HEIGHT * HUS.DEPTH * 3 / 1000000 TOTAL_CUBE_BOX
        FROM   SHIPMENT_LINE_HANDL_UNIT SL
        JOIN   HANDLING_UNIT_SHIPMENT_CFV HUS
        ON     HUS.SHIPMENT_ID = SL.SHIPMENT_ID
       JOIN   SHIPMENT S
       ON     S.SHIPMENT_ID = SL.SHIPMENT_ID
       JOIN   CUSTOMER_ORDER CO
       ON     CO.ORDER_NO = S.ORDER_NO
       WHERE  SHIPMENT_API.GET_STATE(HUS.SHIPMENT_ID) = 'Completed'
             AND SHIPMENT_API.GET_CONTRACT(HUS.SHIPMENT_ID) = '1314'
       AND SL.HANDLING_UNIT_ID = HUS.HANDLING_UNIT_ID
       AND S.SHIP_VIA_CODE = 'SEA'
       AND CO.REGION_CODE = 'AM'
) 
group by order_no
       , manual_gross_weight
       , objversion
       ,  acct_period_description
        ,  acct_period
       , acc_desc
       , width
       , height
       , depth
       , total_weight_kgs
       , case_nos
       , dimensions
        , total_cube_box
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...