2017-08-11 79 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) 
相关问题