我有一個包含像一些數據表:如何在時間範圍之前從數據庫中獲取數據?
- 產品編號
- 操作
- 日期
- 結果(OK或NOK)。
我想設置一個時間範圍。在此時間範圍內,我希望按日期獲得所有產品ID的第一個結果。
之後,我想檢查整個表格(超出時間範圍),如果這些PID-Operation-Result「pack」的測試結果早於選定時間範圍內的結果。我應該怎麼做?
我有一個包含像一些數據表:如何在時間範圍之前從數據庫中獲取數據?
我想設置一個時間範圍。在此時間範圍內,我希望按日期獲得所有產品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
我想從選定的時間範圍獲得結果。但是我從中得到的那些PID-s可能比選定的時間範圍早。在這種情況下,我想獲得測試結果和超出選定範圍(最早)的時間。 – Bence
通常它是一個很好的做法,包括顯示你已嘗試自己至今一些代碼。還包括確切的數據庫軟件版本(如SQL Server 2008,MySQL ...)。目前還不清楚,爲什麼你使用了C#標籤。 –
我不明白。您想爲每個PID選擇一個最舊的記錄。但是,如果它不在時間範圍內,您希望獲得所有結果,即使一個ID有多個?那是對的嗎? –