2017-08-11 10 views
0

私は作業している大きなストアドプロシージャを持っています。私は特定の製品の最新の顧客注文を私に与えるためにそれにクエリを追加しようとしています。 問題は、日付以外の行をユニークにするものはありません。注文日を含む注文のすべてを取得する必要があることを知っています。OrderDate DESCで注文してください。結果は私が必要なものです。問題を解決するために問題が発生しています。 私のクエリは次のようなもの(一時テーブルは、クエリで一時テーブルの長いシリーズの一部であるになります。最新のデータ行を返す最もよい方法は何ですか?

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

これは、しかし、明らかに製品のためのすべてで、私は必要な結果を生成する何が一番ですただ最近の順序をつかむための効率的な方法あなたが自動インクリメントを持つテーブルの上にid_columnを持っている場合 おかげ

+1

あなたはSELECT TOP 1 t5。*を試してみましたか? –

+0

サンプルデータと期待される結果をご提供できますか? –

答えて

1

は、クエリに入れることができます:?!

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

おそらく 'id_columnでテーブルの順序からトップ1を選択する"か、idカラムが最初になるなら 'order by 1'であるべきです。 – abatishchev

+0

はい、そうです。 – UssefShahid

+0

正しい構文で回答を更新してください – abatishchev

0

あなたはROW_NUMを使用することができます

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) 
関連する問題