Вот запрос доступа:
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?