INSÉRER DANS l'aide de SELECT et incrémenter la valeur dans une colonne

Je suis en train d'insérer manque des lignes dans une table. L'une des colonnes est OrderNumber (numéro de tri), cette colonne doit être de +1 à la valeur max de OrderNumber retourné pour sID dans le tableau. Certains sIDs n'apparaissent pas dans la SPOL table qui est pourquoi il est le WHERE clause à la fin de l'instruction. Je voudrais exécuter cette instruction de nouveau, mais à définir OrderNumber à 1 pour les dossiers où sID il n'existe actuellement pas dans le tableau.

La déclaration ci-dessous ne fonctionne pas en raison de la OrderNumber à l'origine de problèmes avec la clé primaire qui est sID + OrderNumber.

Comment puis-je obtenir le OrderNumber d'augmentation pour chaque ligne qui est insérée basé sur la sID de la colonne?

INSERT INTO SPOL(sID, OrderNumber, oID)
   SELECT           
      sID, OrderNumber, oID
   FROM
      (SELECT 
           sID, 
           (SELECT Max(OrderNumber) + 1
            FROM SPOL
            WHERE sID = TMPO.sID) AS OrderNumber, 
           oID
       FROM TMPO
       WHERE NOT EXISTS (SELECT * FROM SPOL
                         WHERE SPOL.oID = TMPO.oID)
      ) AS MyData
   WHERE
       OrderNumber IS NOT NULL  

OriginalL'auteur mheptinstall | 2012-02-23