我有一张桌子需要查询。该表包含4列,可以调用一个“日期”,另一个调用“价格A”,然后调用“价格B”和“B名称”。 所以这些是我的列标题,当然每行都有一个日期,价格A和该日期的价格B,以及相应的B名称。
我想要做的是让每一行对应一个日期 - 例如,第一行将是01/01/2016,并且每个B都有一个单独的列。所以我将能够看到,因为任何日期,每个B的相应价格。不幸的是,由于我的SQL技能有限,我不知道如何开始这种操作。
想要:
B1 B2 B3 B4 A
01/06/2016: 1 5 6 6 3
02/06/2016: 1.5 5.2 6.1 6.3 3
有:
Date Name B Price B Price A
1/06/2016 B1 1 3
1/06/2016 B2 5 3
1/06/2016 B3 6 3
1/06/2016 B4 6 3
答案 0 :(得分:0)
您可能会将UNPIVOT与PIVOT混淆。 PIVOT将行转换为列,而UNPIVOT则相反。
所以使用PIVOT然后这样的东西可以工作:
SELECT D, B1, B2, B3, B4, A
FROM
(
SELECT TO_CHAR("Date",'DD/MM/YYYY')||':' as D,
"Name B" as Name,
"Price A" as A,
"Price B" as PriceB
FROM WHATIHAVE
)
PIVOT ( MAX(PriceB) FOR Name IN (B1, B2, B3, B4) );