2010-09-08 2 views
0

fonctionne cette sous-requête dans SQL Server 2005 Compact Edition 4Comment faire cette requête dans SQL Server 2005 Compact Edition 3.1?

SELECT TableA.serialNo 
FROM TableA, 
     (SELECT MAX(TableB.lotNo) AS lotNo,TableA.codeA,TableA.codeB 
     FROM TableA, TableB 
     WHERE (TableA.codeA =TableB.codeA) 
       AND (TableA.codeB = TableB.codeB) 
       AND ((LEN(TableA.openDate) > 0) OR TableA.openDate IS NOT NULL) 
     GROUP BY 
       TableA.codeA, TableA.codeB) a 
WHERE (TableA.lotNo < a.lotNo) 
     AND (TableA.codeA = a.codeA) 
     AND (TableA.codeB = a.codeB) 
     AND ((LEN(TableA.endDate) = 0) OR TableA.endDate IS NULL) 

Comment peut-il être dans SQL Server 2005 Compact Edition 3.1?

Merci!

+0

Savez-vous que cela ne fonctionne pas en 3.1? Y a-t-il une erreur spécifique que la requête vous donne dans 3.1? –

Répondre

0

Avez-vous essayé de remplacer la syntaxe de jointure (moins lisible par imho) par INNER JOINS?

SELECT TableA.serialNo 
    FROM TableA 
      INNER JOIN (
       SELECT MAX(TableB.lotNo) AS lotNo 
         ,TableA.codeA 
         ,TableA.codeB 
       FROM TableA 
         INNER JOIN TableB ON TableA.codeA = TableB.codeA 
              AND TableA.codeB = TableB.codeB 
       WHERE LEN(TableA.openDate) > 0 
         OR TableA.openDate IS NOT NULL 
       GROUP BY 
         TableA.codeA, TableA.codeB 
      ) a ON TableA.lotNo < a.lotNo 
        AND TableA.codeA = a.codeA 
        AND TableA.codeB = a.codeB 
    WHERE LEN(TableA.endDate) = 0 
      OR TableA.endDate IS NULL 

ou une ré-écriture des conditions

SELECT a1.serialNo 
FROM TableA a1 
     INNER JOIN (
      SELECT MAX(b.lotNo) AS lotNo 
        , a.codeA 
        , a.codeB 
      FROM TableA a 
        INNER JOIN TableB b ON a.codeA = b.codeA 
             AND a.codeB = b.codeB 
      WHERE a.openDate IS NOT NULL 
      GROUP BY 
        a.codeA, a.codeB 
     ) a2 ON a1.lotNo < a2.lotNo 
       AND a1.codeA = a2.codeA 
       AND a1.codeB = a2.codeB 
WHERE LEN(COALESCE(a1.endDate, '')) = 0 
+0

Merci pour vos réponses, j'ai testé ces deux réponses, mais SQL Server 2005 Compact Edition 3.1 ne supporte pas SubQuery comme ceci: (... – JulyPeace

Questions connexes