J'ai deux tables:
SELECT * FROM dbo.Customer as Customer LEFT OUTER JOIN dbo.Order ON Customer.PK_Customer = dbo.Order.FK_Customer
3 Réponses :
J'aime utiliser top 1 avec des liens code> pour des problèmes tels que celui-ci:
Vous pouvez avoir laissé uniquement l'enregistrement avec la date la plus récente:
--CREATE TABLE [Order] --( -- PK_Order int, -- FK_Customer int, -- OrderDate date, -- Total decimal(10,2) --) --INSERT [Order] VALUES --(1,1,'2020-01-20',150), --(2,1,'2020-01-25',200) --CREATE TABLE Customer --( -- PK_Customer int, -- Name nvarchar(20), -- Age int --) --INSERT [Customer] VALUES --(1,'John Miller',25), --(2,'Max Monroe',28) SELECT * FROM dbo.Customer C LEFT OUTER JOIN dbo.[Order] O ON C.PK_Customer = O.FK_Customer AND OrderDate=(SELECT MAX(OrderDate) FROM [Order] WHERE [Order].FK_Customer=O.FK_Customer)
Un moyen similaire à la réponse de Tim, mais la différence est que la partition par est dans la table des commandes et se joignant à la ligne = 1 pour chaque client.