Bonjour,
Je dois dans le cadre d'une extraction de données d'une base A à une base B faire une requete qui donnerait
tableA
tableB
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 item Commande Qty ------ -------------- --------- 1 1 20 1 1 30 1 2 200 1 2 3 1 2 10 2 17 20 3 22 1000 3 22 2000
Une des idées que j'ai eu est
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 item Commande Qty Num_Ligne ------ -------------- --------- ------------- 1 1 20 1 1 1 30 2 1 2 200 1 1 2 3 2 1 2 10 3 2 17 20 1 3 22 1000 1 3 22 2000 2
ETAPE 1
ETAPE2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 INSERT INTO TABLEB ( Item, Commande, Qty, Num_Ligne) (SELECT Item, Commande, Qty, 0 FROM TABLEA )
Ce qui donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 UPDATE TABLEB SET Num_Ligne = B2.Num_Ligne FROM TABLEB AS B1 INNER JOIN (Select Item, Commande, (max(Num_Ligne) + 1) AS Num_Ligne FROM TABLEB GROUP BY Item, Commande) AS B2 ON B1.Item=B2.Item AND B1.Commande=B2.Commande WHERE Num_Ligne = 0
Bon je me doute bien pourquoi cette méthode ne marche pas mais je vois pas du tout comment faire pour que ca marche... mis à part peut etre une procedure stockée avec un curseur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 item Commande Qty Num_Ligne ------ -------------- --------- ------------- 1 1 20 1 1 1 30 1 1 2 200 1 1 2 3 1 1 2 10 1 2 17 20 1 3 22 1000 1 3 22 2000 1
enfin je suis preneur de tout en 1, 2, 3 requetes s'il le faut
Merci d'avance
Loic
Partager