如何从组中获取最新记录和状态?

时间:2017-12-07 08:01:04

标签: sql-server select group-by

这就是我的数据 enter image description here

您会注意到有3组行;只有 createdAt 状态列不同。我想从每个组中获取“最新”记录,即突出显示的行,PK = {3,6,9}。

这可以用一个SQL语句完成吗? (方言是Microsoft SQL Server)

2 个答案:

答案 0 :(得分:0)

使用row_number功能

;with cte
as
(
    select
        SeqNo = ROW_NUMBER() OVER(PARTITION BY RefDocNo ORDER BY CreateAt DESC),
        *
        FROM YourTable
)
SELECT
    *
    FROM cte
        WHERE SeqNo = 1

此功能称为公用表表达式 - CTE。它的工作原理就像子查询一样,除了你可以在同一个内部递归调用cte。但没有必要将其命名为cte,而是可以给它任意名称

答案 1 :(得分:-1)

您在MS SQLSERVER中有TOP命令,因此可以执行

SELECT * FROM (
      SELECT TOP 1 * FROM Table WHERE your_where_clauses
      order by your-order-field ASC (DESC IF YOU WANT LAST RECORDS)
)

即使用其他方法回答问题,您也可以使用TOP命令获得预期的结果。

希望这有帮助