1
我需要在三個條件任何其他替代寫這個SQL查詢
- 選擇數據庫查找表的最後日期(StorageDate列)爲每個記錄
- 看看是否有更多的則是一個在爲相同的ID第一步(ID列)
- 然後查看找到的條目的日期(StorageDate column)如果DuplicateID是= 2
因此,如果表具有如下的數據:
ID |StorageDate | DuplicateTypeID
1 |2014-10-22 | 1
1 |2014-10-22 | 2
1 |2014-10-18 | 1
2 |2014-10-12 | 1
3 |2014-10-11 | 1
4 |2014-09-02 | 1
4 |2014-09-02 | 2
然後,我應該得到以下結果
ID
1
4
我已經寫了下面的查詢,但它實在是太慢了,我想知道是否有人有更好的方式來寫。
SELECT DISTINCT(TD.RecordID)
FROM dbo.MyTable TD
JOIN (
SELECT T1.RecordID, T2.MaxDate,COUNT(*) AS RecordCount
FROM MyTable T1 WITH (nolock)
JOIN (
SELECT RecordID, MAX(StorageDate) AS MaxDate
FROM MyTable WITH (nolock)
GROUP BY RecordID)T2
ON T1.RecordID = T2.RecordID AND T1.StorageDate = T2.MaxDate
GROUP BY T1.RecordID, T2.MaxDate
HAVING COUNT(*) > 1
)PT ON TD.RecordID = PT.RecordID AND TD.StorageDate = PT.MaxDate
WHERE TD.DuplicateTypeID = 2
會不會有一種情況,一個ID爲duplicatetype 2,但*犯規*顯示在列表中的? – paqogomez 2014-12-03 21:57:55