[英]How to get data from database in time range if it's not contained before the time range?
我有一个表,其中包含一些数据,例如:
我想设定一个时间范围。 在此时间范围内,我想按日期获取所有产品ID的第一个结果。
之后,我想检查整个表(也超出了时间范围),是否有那些PID-Operation-Result“数据包”的较早测试结果,我从所选时间范围得到了什么。 我应该怎么做?
您可以使用类似此查询的内容
SELECT * FROM YOUR_TABLE WHERE Date Between '01/01/2016' and '10/06/2016'
您想为每个PID选择一个记录,最旧的。 但是,如果不在时间范围内,即使一个ID有多个结果,您也要获得所有结果? 那是对的吗?
假设您正在使用SQL Server,则可以使用排名函数:
WITH CTE AS
(
SELECT [Product ID],
[Operation],
[Date],
[Result],
RN = ROW_NUMBER() OVER (PARTITION BY [Product ID] ORDER BY [Date])
FROM dbo.TableName
)
SELECT [Product ID], [Operation], [Date], [Result]
FROM CTE
WHERE RN = 1 OR [Date] NOT BETWEEN @BeginRange AND @EndRange
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.