Select 只有最近的数据行

Select only the most recent datarows

我有一个 table 需要针对特定​​产品的多个条目,您可以创建一个这样的示例:

CREATE TABLE test(
    [coltimestamp] [datetime] NOT NULL,
    [col2] [int] NOT NULL,
    [col3] [int] NULL,
    [col4] [int] NULL,
    [col5] [int] NULL)
GO

Insert Into test 
values ('2021-12-06 12:31:59.000',1,8,5321,1234), 
('2021-12-06 12:31:59.000',7,8,4047,1111),
('2021-12-06 14:38:07.000',7,8,3521,1111),
('2021-12-06 12:31:59.000',10,8,3239,1234),
('2021-12-06 12:31:59.000',27,8,3804,1234),
('2021-12-06 14:38:07.000',27,8,3957,1234)

如果您愿意,您可以将 col2 查看为产品编号。 我需要的是查询这种 table 的 returns col2 的唯一数据,它必须为非唯一的 col2 条目选择最近的时间戳。

换句话说,我需要每个产品的最新条目

所以在示例中,结果将少显示两行:col2 = 7 和 col2 = 27 的旧时间戳已被删除

感谢您的先进知识

按时间戳的降序为每个 col2 值按 ROW_NUMBER() 给出行号。

;with cte as(
  Select  rn=row_number() over(partition by col2 order by coltimestamp desc),*
   From table_name
)
Select * from cte
Whwre rn=1;