Ошибка пропущенной запятой при использовании функции Pivot для таблицы - PullRequest
0 голосов
/ 23 октября 2019

Я создаю простую сводку, но получаю ORA-00917: ошибка пропущенной запятой в строке, где существует функция сводки (третья строка). Пожалуйста, помогите.

Не уверен, что еще нужно попробовать, так как синтаксис кажется правильным, поскольку я новичок в функции сводки.

SELECT venue, notional
FROM ABC
pivot (sum(notional) FOR (venue) IN ('A' as A1 , 'B' as B1));

Ожидаемый результат будет A1 и B1, показывая ихсоответствующие понятия.

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Вам не нужен подзапрос. Столбцы venue и notional в таблице ABC были повернуты и больше не существуют в выходном наборе результатов, поэтому предложение SELECT не найдет эти столбцы.

Вместо SELECTa1 и b1 столбцы, которые вы развернули:

Тестовые данные :

CREATE TABLE abc ( id, venue, notional ) AS
SELECT 1, 'A', 1 FROM DUAL UNION ALL
SELECT 1, 'A', 2 FROM DUAL UNION ALL
SELECT 1, 'A', 3 FROM DUAL UNION ALL
SELECT 1, 'B', 1 FROM DUAL UNION ALL
SELECT 1, 'B', 2 FROM DUAL UNION ALL
SELECT 2, 'B', 3 FROM DUAL;

Запрос :

SELECT id, a1, b1      -- you can't use venue or notional here as they've been pivoted.
FROM ABC
pivot (sum(notional) FOR (venue) IN ('A' as A1 , 'B' as B1));

Выход :

ID |   A1 | B1
-: | ---: | -:
 1 |    6 |  3
 2 | <em>null</em> |  3

дБ <> скрипка здесь

0 голосов
/ 23 октября 2019

Кажется, вы пропустили подзапрос перед функцией PIVOT -

SELECT *
FROM (SELECT venue, notional
      FROM ABC
     )
PIVOT (
        SUM(notional) FOR (venue) IN ('A' as A1 , 'B' as B1)
      );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...