我有下表:
ID BLOWNUMBER TIME LADLE
--- ---------- ---------- -----
124 1 01/01/2012 2
124 1 02/02/2012 1
124 1 03/02/2012 0
124 2 04/01/2012 1
125 2 04/06/2012 1
125 2 01/03/2012 0
Run Code Online (Sandbox Code Playgroud)
我希望得到一组TIME的最大值.LADLEID & BLOWNUMBER
需要输出:
124 1 01/01/2012
124 2 04/01/2012
125 2 04/06/2012
Run Code Online (Sandbox Code Playgroud)
如果您正在使用SQL Server(或支持CTE的其他引擎ROW_NUMBER),则可以使用此CTE(公用表表达式)查询:
;WITH CTE AS
(
SELECT
ID, BlowNumber, [Time],
RN = ROW_NUMBER() OVER (PARTITION BY ID, BLOWNUMBER ORDER BY [Time] DESC)
FROM Sample
)
SELECT *
FROM CTE
WHERE RN = 1
Run Code Online (Sandbox Code Playgroud)
此CTE将数据"分区" (ID, BLOWNUMBER),并且ROW_NUMBER()函数从1开始为每个"分区"分配数字,按[Time]列排序(最新时间值为第一个).
然后,您只需从该CTE中进行选择并使用它RN = 1来获取最新的每个数据分区.