2012-03-30 21 views
0

通常我會做從多個返回數據庫中選擇最近的行設置

select top (1) * from table where id active = '1' and doc_type_id = '404' 

,以獲得最新的行。

但是,我正在使用IN獲取結果。加一個加入。

select t1.* 
    from table1 t1 left join table2 t2 on (t1.propid = t2.propid) 
where t2.caseid in ('100','101') and t1.active = '1' and b.doc_type_id = '404' 

此查詢返回文檔。但是,有多個相同類型的文檔。 如果每個人都有10個文檔,我只需要最新的文檔。

我想從數據庫中檢索每個最新的1個文檔。

我希望我解釋自己:)

+0

工作的SQL類型是什麼標籤爲,請不要使用標題 – 2012-03-30 17:45:45

回答

0

沒有看到您要返回的類型,這聽起來像您需要使用GROUP BY和/或MAX。如果這不能解決您的問題,您能否發佈樣本數據集和您的期望?

你甚至可能能夠使用partitioning和/或ROW_NUMBER()

更新基於評論

WITH myCTE 
AS 
(
    SELECT t1.*, 
     ROW_NUMBER() OVER (PARTITION BY t2.caseid ORDER BY LastSavedDate DESC) AS RowNumber 
    FROM table1 t1 
     LEFT JOIN table2 t2 
      ON t1.propid = t2.propid 
    WHERE t2.caseid in ('100','101') 
     AND t1.active = '1' AND b.doc_type_id = '404' 
) 
SELECT * 
FROM myCTE 
WHERE RowNumber = 1; 

這可能會爲您根據您的意見

+0

我們目前有一個存儲文件位置的文檔數據庫。每一行都鏈接到資產。 當前,每種文檔類型都有多行。 我只是想找回最新的一行。 與這一個我回來的文檔類型的所有行。 我遇到的問題是IN。 它應該返回2行。 一個100和一個101. 但它只返回1行,當我嘗試一組。 – Prescient 2012-03-30 17:49:49

+0

但是,你的專欄是什麼?你想要得到什麼?一個樣本數據集(它不一定是真實的數據,只是給出想法)會是非常有用的 – 2012-03-30 17:52:24

+0

ID | propertyid | document_type_id | file_location 1 100 404 C:\ f1.doc 2 100 404 C:\ f2.doc 3 100 404 C:\ f3.doc 4 101 404 C:\ f4.doc 5 101 404Ç :\ f5.doc 6 101 404 C:\ f6.doc 7 101 404 C:\ f7.doc – Prescient 2012-03-30 17:55:08

0

這是窗口功能理想的情況。他們正是你需要的。看看over關鍵字。

+0

絕對是朝着正確方向邁出的一步。 – Prescient 2012-03-30 18:32:07

相關問題