これはMySQL上では簡単なはずですが、SQL Server 2008ではそれが不可能な理由が混乱しています。SQL Server:左結合とサブクエリ
SELECT * FROM Customers AS cust
LEFT JOIN (SELECT TOP 1 * FROM Vehicles AS v WHERE v.CustNo=cust.CustNo) AS veh ON veh.CustNo=cust.CustNo;
エラーが
The multi-part identifier "cust.CustNo" could not be bound.
すべてのアイデアをみんなで?
LEFT JOINとOUTER APPLYとの違いを説明してください。 –
@BoboFilipino - このアプローチの鍵は本当に 'row_number'です。それを 'partition by'で使用し、' rn = 1'でフィルタリングすると、 'custno'ごとに最初の' vehicle'レコードだけが選択されます。全ての顧客が車両を持っていない場合にのみ、「外部結合」が必要となる。そうであれば、代わりに標準の '内部結合 'を使うことができます。 – sgeddes
ああ、それは啓発です。これは私の現在のプロジェクトで本当に役立つと思います。あなたの知識を共有し、本当に役に立つことに感謝します。アップして受け入れる。 –