如何在时间范围之前从数据库中获取数据?
问题描述:
我有一个包含像一些数据表:如何在时间范围之前从数据库中获取数据?
- 产品编号
- 操作
- 日期
- 结果(OK或NOK)。
我想设置一个时间范围。在此时间范围内,我希望按日期获得所有产品ID的第一个结果。
之后,我想检查整个表格(超出时间范围),如果这些PID-Operation-Result“pack”的测试结果早于选定时间范围内的结果。我应该怎么做?
答
你可以使用这样的查询
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
+0
我想从选定的时间范围获得结果。但是我从中得到的那些PID-s可能比选定的时间范围早。在这种情况下,我想获得测试结果和超出选定范围(最早)的时间。 – Bence
通常它是一个很好的做法,包括显示你已尝试自己至今一些代码。还包括确切的数据库软件版本(如SQL Server 2008,MySQL ...)。目前还不清楚,为什么你使用了C#标签。 –
我不明白。您想为每个PID选择一个最旧的记录。但是,如果它不在时间范围内,您希望获得所有结果,即使一个ID有多个?那是对的吗? –