私はSQL置換
TEST
----
tablename|columnvalue|rankofcolumn
A|C1|1
A|C2|2
A|C3|3
A|C4|4
B|CX1|1
B|CX2|2
C|CY1|1
C|CY2|2
C|CY3|3
を含むテーブルのテストを持っている私は、このquestionを1として
RESULT
----
tablename|columnvalue|rankofcolumn|path
A|C1|1|C1
A|C2|2|C1->C2
A|C3|3|C1->C2->C3
A|C4|4|C1->C2->C3->C4
B|CX1|1|CX1
B|CX2|2|CX1->CX2
C|CY1|1|CY1
C|CY2|2|CY1->CY2
C|CY3|3|CY1->CY2->CY3
を次のように他の列と一緒にパスを生成したい、私は再帰的に使用することができますこれを達成するCTE
WITH r (tablename, columnvalue, rankofcolumn, PATH) AS
(SELECT tablename,
columnvalue,
rankofcolumn,
columnvalue
FROM test
WHERE rankofcolumn = 1
UNION ALL
SELECT xx.tablename,
xx.columnvalue,
xx.rankofcolumn,
r.PATH || '->' || xx.columnvalue
FROM r
JOIN test xx
ON xx.tablename = r.tablename
AND xx.rankofcolumn = r.rankofcolumn + 1)
SELECT *
FROM r;
しかし、私はこのオプションが欠けているWX2データベースを使用しています 瞬間。このためのSQLの代替手段はありますか?
WX2はCTEを促進しないか、この出力の別の解決策を依頼しています – mohan111
前の質問では、中間テーブルが許可されていました。まだOKですか? –
@AlexPoole Yep。中間のテーブルやビューを持つことができます。 – SriniV