2017-06-29 58 views
0

我試圖從特定的記錄開始日期前查找記錄。我不知道如何做到這一點。示例查找日期大於同一表中匹配項的記錄

Name   Issue Open Date   Issue Close Date 
John Doe  02/01/2017  02/15/2017 
John Doe  02/25/2017  03/01/2017 
John Doe  03/05/2017  03/15/2017 
John Doe  03/20/2017  03/25/2017 
Jane Doe  02/01/2017  02/20/2017 
Jane Doe  02/22/2017  02/28/2017 
Jane Doe  03/07/2017  03/22/2017 
Jane Doe  03/25/2017  04/05/2017 
Jim Jones  02/17/2017  02/25/2017 
Jim Jones  02/15/2017  02/18/2017 
Jim Jones  03/01/2017  03/07/2017 
Jim Jones  03/19/2017  04/02/2017 

我想從第一個問題的結束日期和前進中找到每個記錄,但日期是分散的。所以對於John Doe,我想從2017年2月15日或更長時間撤回記錄。對於Jane Doe,我想撤回2017年2月20日以後的記錄。對於吉姆瓊斯我想從02/25/2017和更大的回撤紀錄。我需要從特定日期開始撤回記錄,但是我不能說在哪裏發佈關閉日期> 02/01/2017,因爲我並不總是知道結束日期和日期是分散的。謝謝

+0

SQL表示*無序*集合。除非列指定了排序,否則組沒有「第一個」記錄。在你的數據中,沒有這樣的列似乎定義了排序。 –

回答

0

在將第一個問題關閉日期用作過濾器之前,您需要執行某種級別的聚合並將結果存儲在CTE或臨時表中。例如:

;WITH CTE AS (
SELECT Name 
,min([Issue Close Date]) as FirstIssueCloseDate 
FROM yourtable 
GROUP BY Name) 

SELECT * 
FROM yourtable A 
JOIN CTE B on a.name = b.name and a.[Issue Open Date] <= 
    b.FirstIssueCloseDate 
相關問題