База данных Oracle: объединение столбцов в сводной - PullRequest
0 голосов
/ 16 мая 2018

SQL:

SELECT * FROM
(
  SELECT ORG_TOT_LOWEST_LEVEL_ID, ORG_TOT_ACCTG_DEPT_ID, 
  EMPL_SCENR_DIM_MBR_CD, EMPL_VER_DIM_MBR_CD, ORG_TOT_ALLOC_POOL_CD, 
  EMPL_VAL_AMT, EMPL_FMONTH, EMPL_FYEAR, EMPL_FMONTH
  FROM EMPL_FCST
)
PIVOT
(
  SUM(EMPL_VAL_AMT) 
  FOR (EMPL_FMONTH, EMPL_FYEAR)
  IN ((01,2018), (02,2018))
)

ОБРАЗЕЦ ДАННЫХ:

OTHER_SELECT_COLUMNS  |  EMPL_VAL_AMT  |  EMPL_FMONTH  |  EMPL_FYEAR
---------------------   --------------   -------------   ------------
          ABC                 1111             1             2018
          ABC                 1112             6             2019

НЕОБХОДИМЫЙ РЕЗУЛЬТАТ:

OTHER_SELECT_COLUMNS  |  1/2018  |  6/2019
---------------------   ---------  --------   
          ABC             1111       1112      

ОШИБКА:

Error starting at line : 1 in command -
SELECT * FROM
(
  SELECT ORG_TOT_LOWEST_LEVEL_ID, ORG_TOT_ACCTG_DEPT_ID, 
  EMPL_SCENR_DIM_MBR_CD, EMPL_VER_DIM_MBR_CD, ORG_TOT_ALLOC_POOL_CD, 
  EMPL_VAL_AMT, EMPL_FMONTH, EMPL_FYEAR, EMPL_FMONTH
  FROM EMPL_FCST
)
PIVOT
(
 SUM(EMPL_VAL_AMT) 
 FOR (EMPL_FMONTH, EMPL_FYEAR)
 IN ((1,2018), (2,2018))
)
Error at Command Line : 11 Column : 8
Error report -
SQL Error: ORA-00918: column ambiguously defined
00918. 00000 -  "column ambiguously defined"
*Cause:    
*Action:

Я пытаюсь объединить EMPL_FMONTH и EMPL_FYEAR как FOR в моем сводном столбце, поэтому заголовок столбца выглядит как MM / YYYY в верхней части с суммой EMPL_VAL_AMT под заголовком каждого столбца. Я чувствую, что мне нужен какой-то оператор EMPL_FMONTH||"/"||EMPL_FYEAR в дополнение к получению запроса для объединения полей в FOR. Есть идеи?

1 Ответ

0 голосов
/ 16 мая 2018

столбец EMPL_FMONTH повторяется в операторе выбора.

Попробуйте это.

SELECT * FROM
(
  SELECT ORG_TOT_LOWEST_LEVEL_ID, ORG_TOT_ACCTG_DEPT_ID, 
  EMPL_SCENR_DIM_MBR_CD, EMPL_VER_DIM_MBR_CD, ORG_TOT_ALLOC_POOL_CD, 
  EMPL_VAL_AMT, EMPL_FMONTH, EMPL_FYEAR
  FROM EMPL_FCST
)
PIVOT
(
 SUM(EMPL_VAL_AMT) 
 FOR (EMPL_FMONTH, EMPL_FYEAR)
 IN ((1,2018), (2,2018))
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...