ORA - 00936 отсутствует выражение SQL PIVOT - PullRequest
0 голосов
/ 05 февраля 2020

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

, поэтому в основном таблица, на которую я смотрю, выглядит примерно так:

initial output of query

Что я хочу, чтобы вывод был таким:

enter image description here

Я пытался запустить этот код:

SELECT ticker, [1], [2]

FROM 

(SELECT acct_no, pct_mktval FROM POSITION_TABLE WHERE acct_no IN (1,2)

PIVOT(SUM(pct_mktval) FOR acct_no IN ([1], [2]));

По сути, я пытаюсь отфильтровать счета, которые находятся в таблице позиций, ie в этом примере исключить действие 3, а затем повернуть его так, чтобы эти числа действий стали столбцами с отображением pct_mktval внутри таблицы. Однако я продолжаю сталкиваться с вышеуказанной ошибкой, поэтому я предполагаю, что логика c, которую я здесь получил, где-то не так.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Вам необходимо использовать правильный синтаксис oraclwe

SELECT * FROM
(
  SELECT acct_no, pct_mktval FROM POSITION_TABLE WHERE acct_no IN (1,2)
)
PIVOT
(
  SUM(pct_mktval)
  FOR acct_no IN ([1], [2])
)
0 голосов
/ 05 февраля 2020

Просто используйте условное агрегирование:

select ticker,
       sum(case when acct_no = 1 then pct_mktval end) as pct_mkval_1,
       sum(case when acct_no = 2 then pct_mktval end) as pct_mkval_2
from position_table
group by ticker;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...