J'essaie de rejoindre deux tables avec une requête ci-dessous.
(SELECT CustomerName, OrderDate, LAG(OrderDate,1) OVER(ORDER BY OrderDate DESC) as Previous_Order_Date FROM Table1) as t1 INNER JOIN (SELECT CustomerName, MAX(OrderDate) as Latest_Order_date FROM Table1 GROUP BY CustomerName) as t2 ON t1.CustomerName = t2.CustomerName AND t1.OrderDate = t2.Latest_Order_date
3 Réponses :
Vous manquez une clause de sélection extérieure: mais vous pourrait em> peut-être capable de simplifier votre requête de ne pas utiliser aucune jointure: p> (SELECT CustomerName, OrderDate FROM Table1)
UNION
(SELECT CustomerName, OrderDate FROM Table1)
Mon objectif est d'obtenir le lattier_order_date et précédent_order_date (celui juste avant la date de commande la plus récente) pour chaque client
Vous devez ajouter une pièce telle que
SELECT t1.CustomerName, t1.Previous_Order_Date, t2.Latest_Order_date FROM (SELECT CustomerName, OrderDate, LAG(OrderDate, 1) OVER(ORDER BY OrderDate DESC) as Previous_Order_Date FROM Table1) as t1 INNER JOIN (SELECT CustomerName, MAX(OrderDate) as Latest_Order_date FROM Table1 GROUP BY CustomerName) as t2 ON t1.CustomerName = t2.CustomerName AND t1.OrderDate = t2.Latest_Order_date
Vous n'avez pas une déclaration de sélection principale.
Essayez quelque chose comme: P>
SELECT * FROM table1 AS t1 JOIN table2 AS t2 ON t1.id = t2.id JOIN (SELECT id, value FROM table3) as t3 on t3.id = t2.id WHERE t3.value IS NOT NULL;
Extérieur SELECT * code> est généralement mauvais et un anti-motif.