SQL Server中最新的两个日期时间
我有下表SQL Server中最新的两个日期时间,sql,sql-server,datetime,Sql,Sql Server,Datetime,我有下表 CREATE TABLE [dbo].[events] ( [event_id] [nvarchar](50) NULL, [event_timestamp] [datetime] NULL, [reading] [int] NULL ) ON [PRIMARY] 使用以下数据和结果 表:活动 结果应该是 所需结果: event_id event_timestamp Reading ---------------------------------
CREATE TABLE [dbo].[events]
(
[event_id] [nvarchar](50) NULL,
[event_timestamp] [datetime] NULL,
[reading] [int] NULL
) ON [PRIMARY]
使用以下数据和结果
表:活动
结果应该是
所需结果:
event_id event_timestamp Reading
--------------------------------------
1200 14-Jun-15 1500
1200 13-Jun-15 1430.7
1330 14-Jun-15 1490
1330 13-Jun-15 1300
1347 14-Jun-15 2700
1347 13-Jun-15 2400
具有行数功能:
with cte as(select *, row_number() over(partition by event_id
order by event_timestamp desc) rn from events)
select * from cte where rn <= 2
@Giorgi Nakeuri,非常感谢你的帮助,我知道了
with cte as(select itemid, dt, info, row_number() over(partition by itemid order by dt desc) rn
from (SELECT itemid, dt, MAX(info) info from(
SELECT event_item_id itemid,CONVERT(VARCHAR, event_timestamp, 111) dt, Reading info
FROM dbo.events WHERE CONVERT(VARCHAR, event_timestamp, 111) IN (
SELECT Distinct(CONVERT(VARCHAR, event_timestamp, 111))FROM dbo.events
WHERE Reading !='0.000000')
) tbl1 GROUP BY itemid, dt
) tbl)
select * from cte where rn <= 2 ORDER BY itemid DESC, dt DESC
使用cte asselect itemid,dt,info,row_number overpartition by itemid order by dt desc rn from SELECT itemid,dt,MAXinfo info from SELECT event_item_id itemid,CONVERTVARCHAR,event_timestamp,111 dt,event_additional_info from dbo.events其中CONVERTVARCHAR,event_timestamp,111 IN SELECT DistinctCONVERTVARCHAR,event_timestamp,111来自dbo.events,其中event_附加信息!='0.000000“tbl1按项目ID分组,dt tbl从cte中选择*,其中rn
with cte as(select itemid, dt, info, row_number() over(partition by itemid order by dt desc) rn
from (SELECT itemid, dt, MAX(info) info from(
SELECT event_item_id itemid,CONVERT(VARCHAR, event_timestamp, 111) dt, Reading info
FROM dbo.events WHERE CONVERT(VARCHAR, event_timestamp, 111) IN (
SELECT Distinct(CONVERT(VARCHAR, event_timestamp, 111))FROM dbo.events
WHERE Reading !='0.000000')
) tbl1 GROUP BY itemid, dt
) tbl)
select * from cte where rn <= 2 ORDER BY itemid DESC, dt DESC