在Oracle 12c中,我有一个视图,需要一些时间才能运行。当我添加where子句时,它将返回一行感兴趣的行。该行有像这样的列/值......
我需要将其翻转,以便每个EACH可以看到一行"设置"。我需要SQL来返回类似的东西
我知道我可以为每个入场集做一个UNION ALL,但由于视图需要一段时间才能运行,另外还有大约30个不同的集合(我只显示3 - Car,Boat和truck)< / p>
有更好的方法吗?我看过PIVOT / UNPIVOT,但我没有看到如何使这项工作。
答案 0 :(得分:2)
我认为你正在寻找UNPIVOT
WITH TEMP_DATA (ID1, CarPrice, CarTax, BoatPrice, BoatTax, TruckPrice, TruckTax)
AS (
select 'AAA', 1, 2, 3, 4, 5, 6 from dual )
select TYPE, PRICE, TAX
from temp_data
unpivot
(
(PRICE, TAX)
for TYPE IN
(
(CarPrice, CarTax) as 'CAR',
(BoatPrice, BoatTax) as 'BOAT',
(TruckPrice, TruckTax) as 'TRUCK'
)
)
;
输出:
TYPE PRICE TAX
----- ---------- ----------
CAR 1 2
BOAT 3 4
TRUCK 5 6