0
votes

Rejoindre extérieur gauche avec la condition de cas sur la date la plus récente

J'ai deux tables:

SELECT * 
FROM dbo.Customer as Customer
LEFT OUTER JOIN dbo.Order 
ON Customer.PK_Customer = dbo.Order.FK_Customer


0 commentaires

3 Réponses :


0
votes

J'aime utiliser top 1 avec des liens pour des problèmes tels que celui-ci: xxx


0 commentaires

0
votes

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)


0 commentaires

0
votes

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. xxx


0 commentaires