一种方法是使用窗口函数和条件汇总:
select Cast(DateTime as date) AS [Date], MAX(Temperature) AS MaxTemperature,
max(case when seqnum = 1 then temperature end) as LastTemperature
from (select r.*,
row_number() over (partition by Cast(DateTime as date)
order by DateTime desc) as seqnum
from [Testing].[dbo].[Reading] r
) r
group by Cast(DateTime as date)
order by Cast(DateTime as date);
编辑:
如果你想从最高气温行其他值,那么你可以使用:
select Cast(DateTime as date) AS [Date], MAX(Temperature) AS MaxTemperature,
max(case when seqnum_max = 1 then <whatever column here> end) as <whatever column>
from (select r.*,
row_number() over (partition by Cast(DateTime as date)
order by Temperature desc) as seqnum_max
from [Testing].[dbo].[Reading] r
) r
group by Cast(DateTime as date)
order by Cast(DateTime as date);
您可以使用另一个变量作为最小值。
如果什么有更多的读数相同的温度? Dublicate? [获取具有列的最大值的行](http://stackoverflow.com/questions/121387/fetch-the-row-which-has-the-max-value-for-a-column) –
这种情况下,我关心它一天的最高温度,如果发生一次或两次没有关系 – RobouteGuiliman
好吧,如果有重复你想要哪一个? –