如何编写查询以获取 SQL 服务器中每个组的第一个条目?
How to write query to get 1st entry of each group in SQL Server?
我想获得每个日期每辆车的第一个里程表值。
我试过这个来启动里程表但出现错误:
SELECT TOP 1
CAST(DateTime AS DATE) AS Date, RegistrationNo, OdoMeter AS StartOdometer
FROM
EventsData
GROUP BY
RegistrationNo, CAST(DateTime AS DATE)
ORDER BY
RegistrationNo, DateTime
我收到这个错误:
[SQL Server] 列 'EventsData.OdoMeter' 在 select 列表中无效,因为它未包含在聚合函数或 GROUP BY 子句中。 (8120) (SQLExecDirectW)")
正确的方法是什么?请帮忙!
I want to get 1st odometer value of each vehicle for each date.
这是一个典型的 greatest-n-per-group 问题。一种选择使用 window 函数:
select *
from(
select ed.*,
row_number() over(partition by registrationno, convert(date, datetime) order by datetime) rn
from eventsdata ed
) ed
where rn = 1
order by registrationno, datetime
我想获得每个日期每辆车的第一个里程表值。 我试过这个来启动里程表但出现错误:
SELECT TOP 1
CAST(DateTime AS DATE) AS Date, RegistrationNo, OdoMeter AS StartOdometer
FROM
EventsData
GROUP BY
RegistrationNo, CAST(DateTime AS DATE)
ORDER BY
RegistrationNo, DateTime
我收到这个错误:
[SQL Server] 列 'EventsData.OdoMeter' 在 select 列表中无效,因为它未包含在聚合函数或 GROUP BY 子句中。 (8120) (SQLExecDirectW)")
正确的方法是什么?请帮忙!
I want to get 1st odometer value of each vehicle for each date.
这是一个典型的 greatest-n-per-group 问题。一种选择使用 window 函数:
select *
from(
select ed.*,
row_number() over(partition by registrationno, convert(date, datetime) order by datetime) rn
from eventsdata ed
) ed
where rn = 1
order by registrationno, datetime