Sql 如何获取每天的最后读数
我有一个DB表,其中不断添加数据。添加的数据是传感器数据,因此每个传感器每小时有两个读数。我想知道一种方法,只获取整个月当天的最后读数。比如说,Sql 如何获取每天的最后读数,sql,sql-server,Sql,Sql Server,我有一个DB表,其中不断添加数据。添加的数据是传感器数据,因此每个传感器每小时有两个读数。我想知道一种方法,只获取整个月当天的最后读数。比如说, select * from dbo.NewLogTable where Sensor_ID= '12345'and Date_Reading between '2012-08-01' and '2012-08-31' and DateTimeStamp between '23:30:00'and '23:59:00' order by DateTim
select * from dbo.NewLogTable
where Sensor_ID= '12345'and Date_Reading between '2012-08-01' and '2012-08-31'
and DateTimeStamp between '23:30:00'and '23:59:00'
order by DateTimeStamp asc
我知道这不起作用,但这是我想要的伪代码。同样,这里的目标是每天只获得一个特定传感器的读数(最新)。我见过很多例子,其中显示了一个月的第一天和最后一天,显示过去x天的数量,等等。这与我的应用程序不太一样。有人能帮忙吗?谢谢 您可以使用聚合,即
MAX()
来处理此问题。以下是MSDN:
返回表达式中的最大值。之后可能是
超过条款
您的查询将导致:
SELECT SensorID, MAX(Date_reading) FROM NewLogTable GROUP BY Sensor_ID
您可以使用聚合,即
MAX()
来处理此问题。以下是MSDN:
返回表达式中的最大值。之后可能是
超过条款
您的查询将导致:
SELECT SensorID, MAX(Date_reading) FROM NewLogTable GROUP BY Sensor_ID
您可以使用
row\u number()
窗口功能来实现这一点
select * from
(
select
*,
row_number() over (partition by date_reading order by datetimestamp desc) rn
from yourtable
) v
where rn = 1
您可以使用
row\u number()
窗口功能来实现这一点
select * from
(
select
*,
row_number() over (partition by date_reading order by datetimestamp desc) rn
from yourtable
) v
where rn = 1
您可以将
DATEPART
功能与MAX
结合使用,以获取整个月份当天的读数:
SELECT DATEPART(d, Date_Reading) AS day, MAX(value) AS value FROM table
WHERE Sensor_ID = '12345'
AND Date_Reading BETWEEN '2012-08-01' AND '2012-08-31 23:59:59'
GROUP BY DATEPART(d, Date_Reading)
只需确保您的
BETWEEN
的结束值有一个时间部分。您可以将DATEPART
功能与MAX
结合使用,以获取整个月份的当天读数:
SELECT DATEPART(d, Date_Reading) AS day, MAX(value) AS value FROM table
WHERE Sensor_ID = '12345'
AND Date_Reading BETWEEN '2012-08-01' AND '2012-08-31 23:59:59'
GROUP BY DATEPART(d, Date_Reading)
SELECT TOP 1 *
FROM dbo.NewLogTable
WHERE Sensor_ID = '12345'
AND Date_Reading <= '2012-08-01'
ORDER BY DateTimeSTap DESC
只需确保您的中间的的结束值有一个时间部分。选择TOP 1*
SELECT TOP 1 *
FROM dbo.NewLogTable
WHERE Sensor_ID = '12345'
AND Date_Reading <= '2012-08-01'
ORDER BY DateTimeSTap DESC
从dbo.NewLogTable
其中传感器标识='12345'
和日期读取选择前1*
从dbo.NewLogTable
其中传感器标识='12345'
Date_Reading感谢大家的快速回复。我非常感谢每一个答案。所有这些都很好,但我更喜欢@Dems soulution。再次感谢大家。感谢大家的快速回复。我非常感谢每一个答案。所有这些都很好,但我更喜欢@Dems soulution。再次感谢大家。