【发布时间】:2016-06-16 22:48:36
【问题描述】:
我们目前正在对返回一系列数据的报告进行查询。客户已指定他们希望总共接收 5 行数据,其中包含前 5 天的数据(由开始日期和结束日期变量定义)。对于每一天,他们都需要最接近凌晨 4 点的行中的数据。
我设法让它工作了一天,但我当然不想仅仅为了获取这些值而合并 5 个单独的选择语句。有什么方法可以通过 CTE 实现这一点?
select top 1
'W' as [RecordType]
, [WellIdentifier] as [ProductionPtID]
, t.Name as [Device Name]
, t.RecordDate --convert(varchar, t.RecordDate, 112) as [RecordDate]
, TubingPressure as [Tubing Pressure]
, CasingPressure as [Casing Pressure]
from #tTempData t
Where cast (t.recorddate as time) = '04:00:00.000'
or datediff (hh,'04:00:00.000',cast (t.recorddate as time)) < -1.2
order by Name, RecordDate desc
【问题讨论】:
-
@TabAlleman 。 . .我不认为重复会帮助 OP 回答这个问题。
-
为什么不呢?它显示了获得每组前 1 行的技术。 OP希望每天按时间排列前1行(有你的组/分区),过滤器在凌晨4点之后。我知道如果我是他,这会对我有所帮助。
标签: sql sql-server common-table-expression