0

別の列で使用できるように、行からオブジェクトを宣言するのに問題があります

これは、TripNum#、Length#、Origin、Destinationの形式でテーブルTRIPLEGに挿入される値です。

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は、何を置くべきかわからない部分です。誰かがこれについて私に教えてもらえますか?

4

1 に答える 1

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#"

他のほとんどの場合、問題があります。

-足が2つ以上ある場合

-レグ1がシドニーで終了したが、レグ2がシドニーで開始されなかった場合

これを試して、クロス集計を調査し、さらに質問をしてください。

于 2012-11-14T05:47:31.113 に答える