それぞれがポイント(x、y)を宣言する多数の行を格納するテーブルがあります。各行はパターン内の次のポイントを参照するため、パターン全体を取得するためのクエリは、リンクされたリスト構造を通じて再帰的に定義されます。このような完全な構造を取得する rCTE を開発しました...
WITH list (id, next, x, y) AS (
-- rCTE anchor expression
SELECT id, next, x, y
FROM POINT
WHERE id = @id
UNION ALL
-- rCTE recursive expression
SELECT POINT.id, POINT.next, POINT.x, POINT.y
FROM POINT
INNER JOIN list ON POINT.id = list.next)
SELECT x, y FROM list
さらに、上記のテーブルに格納されているこれらの各パターンの開始点を参照する別のテーブルがあります。
最終的な目標は、コンマ区切りのリストに統合された各パターンのすべてのポイントで 2 次元の結果を返すクエリを開発することです。この戻り値は次のようになります。
id | name | points
-----------------------
1 | test | 1,2,1,3,1,4
(ポイントの奇数インデックスは x で、偶数インデックスは y です。)
これを達成する単純な解決策は、親テーブルをループし、親テーブルの行セットごとに@id
rCTE を実行することです。それはうまくいくでしょうし、私はすでにこれの大まかな実装をしていますが、私はこの解決策が好きではありません. この目標を達成するためのより良い、より「SQL」な方法はありますか?