[列 B] による順序付けを想定しているように見えますが、これは自己結合で明示的に行うことができます。
SELECT t1.[Column A], t1.[Column B], t1.[Column C], t1.[Column D]
FROM YourTableName t1
JOIN YourTableName t2
ON t2.[Column A] = t1.[Column A]
AND t2.[Column B] > t1.[Column B]
WHERE t2.[Column C] > t1.[Column C]
AND t2.[Column D] < t1.[Column D]
これは、[Column A] = 'Ex1' などの行が正確に 2 つ存在することを前提としています。[Column A] に同じ値を持つ行が 2 つ以上ある場合、予期しない結果になる可能性があります。
最初の 2 つの比較は結合条件の一部であり、3 番目と 4 番目の比較は WHERE 句の一部であることに注意してください。
アップデート:
変更された要件への対応: [Column A] = 'Ex1' の行が 20 行ある場合があります。[列 C] の最小値が [列 D] の最小値と同じ行にない [列 A] の個別の値を返します。【B欄】該当なし。
SELECT DISTINCT t1.[Column A]
FROM YourTableName t1
JOIN
(SELECT [Column A], MIN([Column C]) AS MinC, MIN([Column D]) AS MinD
FROM YourTableName
GROUP BY [Column A]) t2
ON t2.[Column A] = t1.[Column A]
WHERE t1.[Column C] = t2.MinC
AND t1.[Column D] <> t2.MinD
これは以下を返します:
Column A
Ex1
次のテスト テーブルの場合:
CREATE TABLE YourTableName
([Column A] VARCHAR(50),
[Column B] VARCHAR(50),
[Column C] INT,
[Column D] INT)
そしてテストデータ:
INSERT INTO YourTableName
([Column A], [Column B], [Column C], [Column D])
VALUES ('Ex1', 'Title A', 1, 2)
INSERT INTO YourTableName
([Column A], [Column B], [Column C], [Column D])
VALUES ('Ex1', 'Title B', 2, 1)
INSERT INTO YourTableName
([Column A], [Column B], [Column C], [Column D])
VALUES ('Ex1', 'Title C', 3, 1)