Возникли проблемы с репликацией Access Query в Oracle - PullRequest
0 голосов
/ 15 мая 2018

Вот запрос доступа:

TRANSFORM Sum(EMPL_VAL_AMT) AS SumOfEMPL_VAL_AMT
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
FROM EMPL_FCST
GROUP BY 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
ORDER BY FDATE([EMPL_FMONTH] & "/" & [EMPL_FYEAR])
PIVOT FDATE([EMPL_FMONTH] & "/" & [EMPL_FYEAR]);

Вот моя попытка сделать это в Oracle 12cr2:

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
FROM EMPL_FCST
GROUP BY 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
ORDER BY EMPL_FMONTH || "/" || EMPL_FYEAR AS FDATE
PIVOT
(
  SUM(EMPL_VAL_AMT) IN EMPL_FMONTH || "/" || EMPL_FYEAR AS FDATE
)

Я пытаюсь создать сводную таблицу, которая объединяет два поля EMPL_FMONTH и EMPLY_FYEAR как FDATE, чтобы быть заголовком столбца на сумму EMP_VAL_AMT. В основном, 1/18 | 2/18 | 3/18 в верхней части с суммой EMPL_VAL_AMT за каждый период времени.

Вот ошибка, которую я получил, пытаясь запустить код:

Error starting at line : 1 in command -
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
FROM EMPL_FCST
GROUP BY 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
ORDER BY EMPL_FMONTH || "/" || EMPL_FYEAR AS FDATE
PIVOT
(
  SUM(EMPL_VAL_AMT) IN EMPL_FMONTH || "/" || EMPL_FYEAR AS FDATE
)
Error at Command Line : 4 Column : 43
Error report -
SQL Error: ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"
*Cause:    
*Action:

Я пробовал различные комбинации скобок, скобок и порядка для очистки синтаксиса. Кроме того, я даже не уверен, правильно ли я подхожу к логике. Любая помощь будет принята с благодарностью. Спасибо!

Edit:

Хорошо, я переписал запрос, используя все отзывы, и он успешно прошел:

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_FYEAR 
  IN (2018, 2019)
)

Есть ли способ объединить столбец FYEAR и столбец FMONTH в один столбец, который выглядит как ММ / ГГГГ, а затем использовать его в качестве моего FOR в предложении pivot?

...