隨着對錶結構的一些假設,即存在着COL3了整整2項col3中每一個獨特的價值。
DECLARE @table1 TABLE([col1] int, [col2] varchar, [col3] int);
INSERT INTO @table1(col1, col2, col3) VALUES(1, 'A', 1);
INTO @table1(col1, col2, col3) VALUES(2, 'B', 1);
INSERT INTO @table1(col1, col2, col3) VALUES(3, 'A', 2);
INSERT INTO @table1(col1, col2, col3) VALUES(4, 'D', 2);
INSERT INTO @table1(col1, col2, col3) VALUES(5, 'X', 3);
INSERT INTO @table1(col1, col2, col3) VALUES(6, 'G', 3);
SELECT
(SELECT TOP(1) t1.[col2] FROM @table1 AS t1 WHERE t1.[col3] = g.[GroupId] ORDER BY t1.[col1] ASC) AS [a],
(SELECT TOP(1) t2.[col2] FROM @table1 AS t2 WHERE t2.[col3] = g.[GroupId] ORDER BY t2.[col1] DESC) AS [b]
FROM
(SELECT DISTINCT u.col3 AS [GroupId] FROM @table1 AS u) AS g
使用此查詢的優勢比您之前發佈的查詢有什麼優勢。前一個更簡單易懂。 – niceApp
這一個將解決組中有兩行以上的情況。它只會使用第一個(按col1排序)兩個值,而較簡單的解決方案會產生重複的數據。在3個項目的情況下:#1和#2,#2和#3,#1和#3。 –
@mrp:我明白你選擇了更簡單的解決方案,因爲你知道在一個組中不會有兩個以上的項目。如果是這樣,這個人可能已經失去了一些珍貴。它仍然表現出一種不同的方法,一種替代方案其他人可能會覺得它有用。 –