2016-08-26 3 views
1

データベースVerticaからSQLテーブルを操作しようとしています。SQL:開始と終了でSQLテーブルを変更する

テーブルの各行には、開始および終了のXY座標(サブパスを描画)があります。マップ内に描画された各サブパスは、結合してパス(固有のルート名で示される)を形成します。そのため、EndX、End Yは各ルートのStartX StartYと同じです。

マッピングソフトウェアはX & Y列のみしか読み取ることができないため、それらを2列に絞る必要があります。

詳細を説明するために(私が十分に説明していないと思うが)、私は下のサンプルイラスト、テーブルの見た目、そしてどのようになるべきかについて説明します。サンプルのSQL文を実行するために助けることができる人のために、以下の優れた生データを提供

enter image description here

。前もって感謝します!

オリジナル表

RouteName,Sequence,StartX,StartY,EndX,EndY 
road a,1,1.2323,23.1231,1.3242,23.54354 
road a,2,1.3242,23.5435,1.3342,24.23533 
road b,1,1.4312,25.3432,1.4454,25.2322 
road b,2,1.4454,25.2322,1.4634,25.3424 
road b,3,1.4634,25.3424,1.5213,26.2132 

ファイナル表

RouteName,Sequence,X,Y 
road a,1,1.2323,23.1231 
road a,2,1.3242,23.5435 
road a,3,1.3342,24.23533 
road b,1,1.4312,25.3432 
road b,2,1.4454,25.2322 
road b,3,1.4634,25.3424 
road b,4,1.5213,26.2132 

UPDATE:最終的な出力は、タブロー〜に各ルートのルートパスを描画するために使用されるが、XYによって定義され、その行はシーケンス番号に従います。

+0

シーケンス番号でない場合は、始点と終点のx座標とy座標の間に「UNION」を付けることができます。 –

+0

実際に達成したいことは何ですか? – Pirate

+0

@TimBiegeleisen AI PKを仮定すると、それはシーケンスオーダーとしてPKの昇順を使用しても機能しますか? – Takarii

答えて

0

私のシーケンスの中には中断があることが分かっています。この場合、このスクリプトはうまくいくはずです。さらに簡潔だと思った

select routename,sequence,startx,starty 
from table 

union all 

select routename, max(sequence)+1 as sequence, endx as startx, endy as starty 
from table 
group by routename 

order by routename 
+1

元の質問と一致しない回答を返すべきではありません。 –

+0

うーん、それは一致しませんか?結果はまったく同じです:/私のSQLは明らかに良いではないとして私を赦してください。 – Jake

3

問題が、ルートごとにn + 1の順序付きペアを追加するようになっているように思えます。 1つのアプローチは、エンドポイントを識別する第2のクエリですべての開始点を単に一緒にすることである。

SELECT RouteName, 
     Sequence, 
     StartX, 
     StartY 
FROM yourTable 
UNION 
(
    SELECT t1.RouteName, 
      t1.Sequence + 1, 
      t1.EndX, 
      t1.EndY 
    FROM yourTable t1 
    LEFT JOIN yourTable t2 
     ON t1.EndX = t2.StartX AND 
      t1.EndY = t2.StartY AND 
      t1.RouteName = t2.RouteName 
    WHERE t2.RouteName IS NULL 
) 

私は、結果セットを注文しなかったが、ここではトリッキーな部分は、クエリを考え出すされており、うまくいけば、これはあなたがカバーしています。

+0

うわー、ありがとうございました!それを感謝してください〜今それを消化する必要があります:) – Jake

+1

それは独創的な考えです、ありがとう! – Jake

関連する問題