Oracle SQL-如何;“支点”;一对多

Oracle SQL-如何;“支点”;一对多,sql,oracle,Sql,Oracle,在Oracle12c中,我有一个视图,它需要一点时间来运行。当我添加where子句时,它将只返回一行利息。该行有如下列/值 我需要翻转这个,这样我可以看到每个“集”一行。我需要SQL返回如下内容 我知道我可以为每一个入口集合做一个联合,但是由于视图运行需要一段时间,加上大约有30个不同的集合(我只展示了3个-汽车、船和卡车) 有更好的方法吗?我已经查看了PIVOT/UNPIVOT,但我没有看到如何使其工作。我想您正在寻找UNPIVOT WITH TEMP_DATA (ID1, CarPri

在Oracle12c中,我有一个视图,它需要一点时间来运行。当我添加where子句时,它将只返回一行利息。该行有如下列/值

我需要翻转这个,这样我可以看到每个“集”一行。我需要SQL返回如下内容

我知道我可以为每一个入口集合做一个联合,但是由于视图运行需要一段时间,加上大约有30个不同的集合(我只展示了3个-汽车、船和卡车)


有更好的方法吗?我已经查看了PIVOT/UNPIVOT,但我没有看到如何使其工作。

我想您正在寻找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 

我想你在找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 

那正是我要找的!谢谢。@user1009073没问题……仅供参考,注意到我刚才更新了一个不必要的子查询。仍然会得到同样的结果。这正是我想要的!谢谢。@user1009073没问题……仅供参考,注意到我刚才更新了一个不必要的子查询。仍然会得到同样的结果。