2016-06-10 75 views
0

我有一個包含像一些數據表:如何在時間範圍之前從數據庫中獲取數據?

  • 產品編號
  • 操作
  • 日期
  • 結果(OK或NOK)。

我想設置一個時間範圍。在此時間範圍內,我希望按日期獲得所有產品ID的第一個結果。

之後,我想檢查整個表格(超出時間範圍),如果這些PID-Operation-Result「pack」的測試結果早於選定時間範圍內的結果。我應該怎麼做?

+1

通常它是一個很好的做法,包括顯示你已嘗試自己至今一些代碼。還包括確切的數據庫軟件版本(如SQL Server 2008,MySQL ...)。目前還不清楚,爲什麼你使用了C#標籤。 –

+1

我不明白。您想爲每個PID選擇一個最舊的記錄。但是,如果它不在時間範圍內,您希望獲得所有結果,即使一個ID有多個?那是對的嗎? –

回答

0

你可以使用這樣的查詢

SELECT * FROM YOUR_TABLE WHERE Date Between '01/01/2016' and '10/06/2016' 
0

要選擇一個記錄每個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

相關問題