Oracle - 在逆透视查询中添加表中不存在的列

问题描述 投票:0回答:1

在表中我有列ID,CAR_1,CAR_2,CAR_3...

从 Dual 中选择 1 作为 ID、100 作为 CAR_1、200 作为 CAR_2、300 作为 CAR_3;

如何获取 CAR_DAY 列,例如。对于 CAR_1 = 1,CAR_2 = 2 等等..

如何得到这个:

ID  CAR_ID  CAR_DAY
1   100     1
1   200     2
1   300     3

我的演示但不起作用:

SELECT
  ID,
  CAR_ID,
  CAR_DAY,
FROM
  CARS
UNPIVOT
(
  (CAR_ID, CAR_DAY) FOR COL IN
  ((CAR_1, 1),  (CAR_2, 2), (CAR_3, 3))
)
sql oracle unpivot
1个回答
0
投票

这里如何使用

unpivot
:

SELECT ID, CAR_DAY, REPLACE(CAR_DAY, 'CAR_', '') AS CAR_ID 
FROM (
   SELECT 1 as ID, 100 as CAR_1, 200 as CAR_2, 300 as CAR_3
   FROM dual
)
unpivot
( CAR_ID FOR CAR_DAY IN (CAR_1, CAR_2, CAR_3) );

演示在这里

© www.soinside.com 2019 - 2024. All rights reserved.