0
votes

Erreur de requête: Erreur: ER_PARSE_ERROR: Vous avez une erreur dans votre syntaxe SQL; Vérifiez le manuel qui correspond à votre mySQL

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


0 commentaires

3 Réponses :


1
votes

Vous manquez une clause de sélection extérieure: xxx pré>

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)


1 commentaires

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



1
votes

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


0 commentaires

0
votes

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;


1 commentaires

Extérieur SELECT * est généralement mauvais et un anti-motif.