Попытка разворота - PullRequest
       1

Попытка разворота

0 голосов
/ 28 сентября 2018

Я пытаюсь отключить ранее созданную и развернутую таблицу и получить сообщение об ошибке:

ORA-00904:: неверный идентификатор 00904. 00000 - "% s: неверный идентификатор" *Причина: * Действие: Ошибка в строке: 107 Столбец: 1

Это связано с тем, что столбец, который я пытаюсь повернуть, не совпадает с типом данных в строках?:

select 
sales_per_month, 
Product_id, 
Total_amount 
from pivoted_sales 
unpivot((Total_amount) for (Product_id) in( 
100 as '100', <- 107 
101 as '101',
105 as '105', 
106 as '106',
200 as '200'))

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Требуется "100" as 100, а не 100 as '100':

SQL Fiddle

Настройка схемы Oracle 11g R2 :

CREATE TABLE PIVOTED_SALES (
  sales_per_month NUMBER,
  "100" NUMBER,
  "101" NUMBER,
  "105" NUMBER,
  "106" NUMBER,
  "200" NUMBER
);

INSERT INTO pivoted_sales VALUES( 1, 0, 20, 30, 0, 50 );

Запрос 1 :

select  sales_per_month, 
        Product_id, 
        Total_amount 
from pivoted_sales 
unpivot(
  Total_amount for Product_id in( 
    "100" as 100,
    "101" as 101,
    "105" as 105, 
    "106" as 106,
    "200" as 200
  )
)

Результаты :

| SALES_PER_MONTH | PRODUCT_ID | TOTAL_AMOUNT |
|-----------------|------------|--------------|
|               1 |        100 |            0 |
|               1 |        101 |           20 |
|               1 |        105 |           30 |
|               1 |        106 |            0 |
|               1 |        200 |           50 |
0 голосов
/ 28 сентября 2018

Я думаю, вам нужно использовать " вместо ' в имени unpivot столбцов.

select 
sales_per_month, 
Product_id, 
Total_amount 
from pivoted_sales 
unpivot(Total_amount for Product_id in( 
"100",
"101",
"105", 
"106",
"200"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...