Voici ma problématique :
J'ai plusieurs bases de données dans lesquelles on a une table de même nom et même structure.
Ex : mabase1,mabase2, mabase3, etc...
mabase1.table1 a 2 colonnes Col1 et Col2.
Je souhaite construire une vue à partir de cette liste de base de donnée pour regrouper les données des colonnes Col1 et Col2 des tables en questions.
pour obtenir le résultat suivant :
DbaseName;Col1;Col2
mabase1;Col1Value1;Col2Value1
mabase1;Col1Value2;Col2Value2
etc..
mabase2;Col1Value1;Col2Value1
mabase2;Col1Value2;Col2Value2
etc...
mabase3;Col1Value1;Col2Value1
mabase3;Col1Value2;Col2Value2
etc...
Pour cela , j'utilise :
_ une liste contenant le nom de mes bases
_ un curseur sur cette liste
_ une variable contenant ma requete SQL
Le code ci-dessous affiche bien un résultat à 3 colonnes comme souhaité mais je n'arrive pas à construire une view à partir de ce résultat dans SQL Managmt Studio en y copiant ce code ou par une requête de création de vue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 DECLARE @base varchar(50); DECLARE @sqlCommand VARCHAR(8000); DECLARE curseur CURSOR FOR select * from ( values ('HOLDING_TOYS'), ('TOYSMOTORS_TOURS'), ('SAGA_ANGERS') ) as mytab(mycol); OPEN curseur; FETCH NEXT from curseur into @base ; WHILE @@FETCH_STATUS = 0 BEGIN SET @sqlCommand = 'SELECT ''' + @base + ''' as DBaseMycol ,[CT_Num],[CT_intitule] from ['+@base+'].[dbo].[F_COMPTET]' EXEC(@sqlCommand) FETCH NEXT from curseur into @base; END CLOSE curseur DEALLOCATE curseur
Avez-vous une idée pour ce faire ??
( l'utilisation d'un curseur n'est pas optimal mais je n'ai pas + de 150 bases, chacune 'ayant pas + de 50000 entrées par tables requêtées.)
merci bcp d'avance,
Partager