[質問]に続いて:T-SQLマトリックステーブルの空き位置 をクエリするマトリックステーブルをLIFOとして処理しようとしています。(X、Z)の各カップルは、要素を格納できるチャネルを表します。場所を生成するときは、上記の質問と以下の質問で提供されているクエリを使用しています。
SELECT x, z, MAX(CASE WHEN disabled = 0 AND occupiedId IS NULL THEN Y ELSE 0 END) firstFreeY
FROM matrix
GROUP BY x, z
ORDER BY x, z;
これは機能していますが、「穴」は処理しません。実際、Disabledフラグがテーブルから削除されているか、要素が手動で削除されている可能性があります。
私のMatrixテーブルが次のようになる場合:
X Z Y Disabled OccupiedId
--------------------------------------------------
1 1 1 0 591
1 1 2 0 NULL
1 1 3 1 NULL
1 1 4 0 524
1 1 5 0 523
1 1 6 0 522
1 1 7 0 484
1 2 1 0 NULL
1 2 2 0 NULL
1 2 3 0 NULL
1 2 4 0 NULL
1 2 5 0 NULL
1 2 6 0 589
1 2 7 0 592
上記のクエリの結果は次のとおりです。
X Z firstFreeY
------------------------
1 1 2
1 2 5
それ以外の:
X Y firstFreeY
------------------------
1 1 0
1 2 5
これを達成する方法について何か提案はありますか?