2013-02-05 8 views
1

J'essaie de comprendre un problème que j'ai rencontré en exportant des données d'un système à un autre.Ajouter un numéro d'incrémentation automatique basé sur la colonne

Disons que j'ai une table comme:

id | item_num 
1  1    
2  1    
3  2    
4  3    
5  3   
6  3    

Je dois ajouter une colonne à la table et le mettre à jour pour contenir un champ product_num incrémenter la base du point. Ce serait le résultat final compte tenu du tableau ci-dessus.

id | item_num | product_num 
1  1   1 
2  1   2 
3  2   1 
4  3   1 
5  3   2 
6  3   3 

Avez-vous trouvé l'avis utile?

Edit: Ceci est fait dans Access 2010 d'un système à l'autre (source serveur SQL, destination conduit ODBC personnalisée/inconnu)

+0

Qu'est-ce SGBDR vous utilisez (comme MySql, Oracle ou MS SQL Server)? BTW, quel est le résultat souhaité? –

+0

OP mis à jour pour refléter les réponses, merci! – mikeds

Répondre

1

Peut-être que vous pourriez create a view dans votre base de données SQL Server et puis sélectionnez que dans Access insérer dans votre destination.

solutions possibles dans SQL Server:

-- Use row_number() to get product_num in SQL Server 2005+: 
select id 
    , item_num 
    , row_number() over (partition by item_num order by id) as product_num 
from MyTable; 

-- Use a correlated subquery to get product_num in many databases: 
select t.id 
    , t.item_num 
    , (select count(*) from MyTable where item_num = t.item_num and id <= t.id) as product_num 
from MyTable t; 

Même résultat:

id   item_num product_num 
----------- ----------- -------------------- 
1   1   1 
2   1   2 
3   2   1 
4   3   1 
5   3   2 
6   3   3 
+0

La deuxième option était exactement ce que je cherchais. Merci! – mikeds

Questions connexes