Ash*_*hir 2 sql sql-server select sql-server-2005
我有一张桌子; 让它被称呼table1; 包含以下字段和数据
替代文字http://img228.imageshack.us/img228/3827/45939084.png
我需要一个查询,返回Field3具有相同值的每组记录的最大值的记录Field2.这样查询返回:
alt text http://img87.imageshack.us/img87/62/48847706.png
如何使用SQL查询完成此操作?
这个:
WITH q AS
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY field2 ORDER BY field3 DESC) AS rn
FROM table1
)
SELECT *
FROM q
WHERE rn = 1
Run Code Online (Sandbox Code Playgroud)
或这个:
SELECT q.*
FROM (
SELECT DISTINCT field2
FROM table1
) qo
CROSS APPLY
(
SELECT TOP 1 *
FROM table1 t
WHERE t.field2 = qo.field2
ORDER BY
t.field3 DESC
) q
Run Code Online (Sandbox Code Playgroud)
根据field2基数,第一个或第二个查询可以更有效.
有关详细信息,请参阅此文章: