我无法从一行声明一个对象,因此可以在另一列中使用
这是插入表TRIPLEG的值,格式为TripNum#,Length#,Origin,Destination
INSERT INTO TRIPLEG VALUES(10, 1, 'Perth', 'Sydney');
INSERT INTO TRIPLEG VALUES(10, 2, 'Sydney', 'Brisbane');
INSERT INTO TRIPLEG VALUES(11, 1, 'Sydney', 'Melbourne');
我如何实际合并它们看起来像
T# ORIGIN DESTINATION1 DESTINATION2
---- ---------- ------------------- ----------------
10 Perth Sydney Brisbane
11 Sydney Melbourne
我被要求创建一个关系视图,我猜它看起来像这样:
Create view
as select t#, origin, destination, destination
from TRIPLEG
但是Destination2是我不知道放什么的部分。 有谁可以启发我吗?
答案 0 :(得分:2)
这次旅行有多少条腿? 3? 100?您正在寻找的是交叉表。
你还没有说明TRIPLEG中的列是什么,所以我假设t#,leg,origin,destination。
对于您所描述的具体案例,这将有效:
SELECT
"t#",
MAX(DECODE(leg,1,origin)) origin,
MAX(DECODE(leg,1,destination)) destination,
MAX(DECODE(leg,2,destination)) destination2
FROM TRIPLEG
GROUP BY "t#"
对于任何其他情况,它都存在问题。
- 如果有两条腿以上
- 如果一条腿在悉尼完成,但第二条腿在悉尼没有开始
等
试试这个,调查交叉表并提出更多问题。