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;
我有一个 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;