У меня есть таблица, в которой есть продукты, определяемые идентифицирующим кодом, который начинается с цифры и заканчивается буквой, такой как 1A
, 3B
, 7C
и т. Д. В запросе собраны необходимые данные об этихс PIVOT
заявлением.К сожалению, в Oracle нам не разрешено начинать псевдонимы с числа.До сих пор я успешно справлялся с запросом, выводя данные, которые по существу следующие:
SELECT * FROM MyTable
PIVOT ( COUNT(Product) FOR ProductName IN (&product_statement) )
, где переменная подстановки product_statement
была динамически сгенерирована с помощью того же процесса, описанного здесь: Как установить LINESIZE и PAGESIZE с помощью переменной подстановки? .Это типичный результат:
NAME | A1 | B3 | C7
Product A| 1 | 2 | 1
Product B| 3 | 1 | 2
Теперь я пытаюсь перевернуть эти заголовки продукта.Опять же, с помощью процесса подстановки переменных, я создал другую переменную с именем &column_statement
, которая выглядит следующим образом (каждая строка отделена CHR(10)
):
COLUMN A1 TEMP FORMAT A3 HEADING ‘1A’
COLUMN B3 TEMP FORMAT A3 HEADING ‘3B’
COLUMN C7 TEMP FORMAT A3 HEADING ‘7C’
Мой мыслительный процесс заключался в том, что я мог сделать следующее вSQL * Plus:
&column_statement
SELECT * FROM MyTable
PIVOT ( COUNT(Product) FOR ProductName IN (&product_statement) )
/
, но он дает мне следующее:
SP2-0734: unknown command beginning “&column_st…” – rest of line ignored.
NAME | A1 | B3 | C7
Product A| 1 | 2 | 1
Product B| 3 | 1 | 2
Что мне нужно сделать, чтобы динамически установить заголовки столбцов?