Запрос в оракуле - PullRequest
       8

Запрос в оракуле

0 голосов
/ 21 июля 2010
SELECT PRJ_CC_id
, PROJECT_COSTCENTER_NAME
, AREA_ID
, AREA_Name
, Activity_ID
, Activity_Name
, SUM(Total)
FROM(
  (
    SELECT PRJ_CC_id
    , PROJECT_COSTCENTER_NAME
    , AREA_ID
    , AREA_Name
    , Activity_ID
    , Activity_Name
    , (SUM(mon) + SUM(tue) + SUM(wed) + SUM(thu) + SUM(fri) + SUM(sat) + SUM(
      sun)) Total
    FROM tr_view_masterlogentry
    WHERE USER_ID = 654321
    AND work_year = 2010
    GROUP BY PRJ_CC_id
    , PROJECT_COSTCENTER_NAME
    , AREA_ID
    , AREA_Name
    , Activity_ID
    , Activity_Name
    , mon
    , tue
    , wed
    , thu
    , fri
    , sat
    , sun
  )
UNION
  (
    SELECT PRJ_CC_id
    , PROJECT_COSTCENTER_NAME
    , AREA_ID
    , AREA_Name
    , Activity_ID
    , Activity_Name
    , Tot_Amt Total
    FROM tr_view_Exchange_loghours
    WHERE USER_ID                 = 654321
    AND TO_CHAR(adj_Date, 'yyyy') = 2010
    GROUP BY PRJ_CC_id
    , PROJECT_COSTCENTER_NAME
    , AREA_ID
    , AREA_Name
    , Activity_ID
    , Activity_Name
    , Tot_Amt
  )
  )
GROUP BY PRJ_CC_id
, PROJECT_COSTCENTER_NAME
, AREA_ID
, AREA_Name
, Activity_ID
, Activity_Name;

В этом запросе, когда я его выполню, будет получено итоговое значение столбца «Итого» в функции суммы, когда значения обоих столбцов «Итого» в запросе объединения отличаются, как 31 и -2, а сумма равна 29 * 1002.*

но если значение обоих столбцов 'Total' в запросе объединения совпадает с 31 и 31, тогда в сумме будет показано только 31

1 Ответ

3 голосов
/ 21 июля 2010

UNION должно быть UNION ALL. UNION удалит дубликаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...