2017-08-11 78 views
0

所以,我正在處理一個大的存儲過程。我試圖向它添加查詢,以便爲我提供特定產品的最新客戶訂單。 問題是除了日期之外沒有任何東西使得這一行是唯一的。我知道我需要獲取產品的所有訂單,包括訂單日期,然後是ORDER BY OrderDate DESC - 最重要的結果是我需要的,我遇到了隔離該行的問題。 我的查詢看起來是這樣的(臨時表是在查詢一長串臨時表的一部分:返回最近一行數據的最佳方式是什麼?

SELECT t5.*, co.OrderName, co.OrderDate 
FROM #TempTable5 t5 
JOIN #CustomerOrders co 
ON t5.CustomerGUID = co.CustomerGUID 
WHERE co.OrderSet = 'Product25' 

這將產生我需要的結果,但顯然所有的產品訂單的什麼的最有效的方法,只是抓住最近的訂單 感謝

+1

您是否試過SELECT TOP 1 t5。*,.... –

+0

您能否提供樣品數據和預期結果? –

回答

1

,如果你有哪些具有自動增量表的id_column,你可以把上查詢:?!

select * from table order by id_column DESC LIMIT 1 
+0

可能它應該是'id_column'從表格順序中選擇頂部1 *或者(如果id列是第一位,則'按1排序] – abatishchev

+0

是的,您是對的。 – UssefShahid

+0

請用正確的語法更新您的答案 – abatishchev

0

您可以使用ROW_NUM ber如下:

Select * from (
    SELECT t5.*, co.OrderName, co.OrderDate, 
    RowN = Row_number() over(partition by OrderSet order by OrderDate Desc) --Here If OrderSet is not product provide product column here 
    FROM #TempTable5 t5 
    JOIN #CustomerOrders co 
    ON t5.CustomerGUID = co.CustomerGUID 
    WHERE co.OrderSet = 'Product25' 
) a Where a.RowN = 1
0

試試這個。

SELECT t5.*, co.OrderName, co.OrderDate 
    FROM #TempTable5 t5 JOIN #CustomerOrders co ON t5.CustomerGUID = co.CustomerGUID 
WHERE co.OrderSet = 'Product25' AND co.OrderDate = (SELECT TOP(1) OrderDate FROM #CustomerOrders WHERE CustomerGUID = t5.CustomerGUID ORDER BY OrderDate DESC) 
相關問題