0
私は顧客の最新の購入を引き出すために次のクエリを持っています。パフォーマンス上の理由からサブセレクトを使用しようとしましたが、壁にぶつかり、すべての顧客の注文を取り戻しました。私は個々の顧客ごとに最新のものが必要です。SQL Server:このランクを効率的にする
SELECT *
FROM (SELECT od.*, ord.OrderName, ord.OrderDate, RowN =
Row_Number()
OVER (PARTITION BY ord.CustomerOrderGUID ORDER BY ord.OrderDate DESC)
FROM #OrderData od
JOIN CV3Orders ord ON ord.CustomerOrderGUID = od.CustomerOrderGUID
WHERE ord.ProductName = 'Product 10') rnk
WHERE rnk.RowN = 1
サンプルデータと期待される結果を表示できますか? –
私は 'CustomerOrderguid'がcustomerIdと同じではなく、OrderIdであると推測します。あなたは 'CustomerOrderguid'ではなく' partition by'でcustomerid列を持っていますか? – SqlZim
私のデータは、特定の製品を注文した顧客から構成されています。顧客は同じ製品を何回も購入しているので、最も最近の購入を分離し、最新の購入だけを表示する最も効率的な方法を見つけようとしています(行の他の情報とともに)。たとえば、過去に3袋分のコーヒーを購入した顧客がいるとします。私は最近のコーヒーの購入を表示したい。私が提出したクエリは完全に機能しますが、実行するにはかなりの時間がかかります。私は実行時間を短縮するために副選択で同じことをすることができるかどうかを見ています。 – DPool34