[英]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.