Sql 试图解压

Sql 试图解压,sql,oracle11g,Sql,Oracle11g,我正在尝试取消Pivot我以前创建和透视的表,并获取错误信息: 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', <-

我正在尝试取消Pivot我以前创建和透视的表,并获取错误信息:

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'))
选择
每月销售额,
产品标识,
总金额
从数据透视销售
在(

100作为'100',我认为您需要在
unpivot
列名称中使用
而不是

select 
sales_per_month, 
Product_id, 
Total_amount 
from pivoted_sales 
unpivot(Total_amount for Product_id in( 
"100",
"101",
"105", 
"106",
"200"))
您希望
“100”作为100
而不是
100作为“100”

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 );
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 |
查询1

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 );
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 |

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 );
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 |