请教一下SQL,条件:查时间七天数据,每天不同rommID的最新一条数据, 由于七天的roomID有相同的情况,比如怎么做到 七天的roomID为140001的数据都拿到,而且还是每天最新的那条数据,这个Sql有会的吗
SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY room_id ORDER BY date_time DESC) AS row_num
FROM table
WHERE date_time BETWEEN DATEADD(day, -7, GETDATE()) AND GETDATE()
) t
WHERE t.row_num = 1
上面的代码中,我们首先使用ROW_NUMBER()函数按照room_id分组,并按照date_time字段降序排序,生成一个行号。然后在进行子查询时,过滤出date_time字段在过去七天内的数据。最后,在外层查询中,过滤出行号为1的数据,即每天不同room_id的最新一条数据。