SQL Server : création de la Table temporaire avec dynamique de la colonne
J'ai un problème avec ma situation actuelle, j'ai cherché à travers toute solution sur le net mais je ne peux pas l'obtenir.
Ici la question:
J'ai un tas d'instructions SQL qui doivent être exécutés dans une procédure stockée à l'aide du curseur à l'intérieur, chacun des énoncés est d'effectuer une insertion en sélectionnant à partir d'une autre base de données ainsi que la table.
Par exemple:
INSERT INTO Database1.Table1(column1, column2, column3)
SELECT column1,column2, column3
FROM Database2.Table2
WHERE --Some Condition
et peut-être une autre instruction SQL exécutée, c'est comme cela
INSERT INTO Database1.Table3(column1, column2, column3, column4)
SELECT column1, column2, column3, column4
FROM Database3.Table3
WHERE --Some Condition
Bon, fondamentalement, mon processus est similaire à ce
Execute Sql to insert into temp Tables --> Insert into a permanent Table from Temp Tables
Par dessus deux instructions SQL, mon exécuté résultat de base de données2 ou 3 ou peut-être 4,5 et etc. Je passe à mon database1 pour le magasin permanent. En plus de résumé de la façon de raconter qui est, je veux juste fait une autre copie de données qui se de différentes source de base de données et de les stocker dans ma base de données locale pour faire plus de traitement.
Mon principal problème est de ma personne à charge (ou manager) m'a dit de trow le tout exécuté résultat dans une table temporaire ou #Table
avant de les exécuter dans la permanents.
Quelque chose comme ceci:
INSERT INTO #Table3(column1, column2, column3, column4)
SELECT column1, column2, column3, column4
FROM Database3.Table3
WHERE --Some Condition
Je suis passé par quelques recherches sur #Temp
tables et je l'ai trouvé la plupart d'entre eux est de créer, avec le "RÉPARER" colonne comme
CREATE TABLE #Table
(
column1 VARCHAR(10),
column2 VARCHAR(10),
column3 VARCHAR(10)
)
PROBLÈME: est-il de toute façon à créer avec les colonnes dynamiques? Plus de détail moyen de demander, est-il de toute façon à insérer par sélectionner dans une #Temp
table sans préfixe de la colonne? Parce que c'est impossible pour moi de créer un tas de temp table pour chacun de SQL exécuté.
Merci
PS 1: je suis tout à fait un débutant de SQL Server, s'il vous plaît n'hésitez pas à voix de ma faute ou de l'erreur. Nous apprenons tous de nos erreurs.
PS 2: Désolé pour mon pauvre niveau d'anglais, j'ai essayé de mon mieux pour élaborer plus clairement.
Ce qui concerne:
LiangCk
SELECT coloum1,coloum2,coloum3,coloum4 INTO #Table3 FROM Database3.Table3
pour créer un tableau basé sur les résultats de l' SELECT
. C'est ce que tu veux dire?Non, ce n'est pas nécessaire, car Il peut être face à quelques centaines de sql qui peuvent être chacun d'entre eux est d'avoir différents coloum. Si je fais ce que u fait, ce que j'en créer quelques centaines de Temp table?
Je ne suis pas sûr de ce que vous voulez accomplir; ce que je comprends, vous avez plusieurs tables avec des colonnes différentes, et vous avez besoin d'insérer ces données dans une table temporaire. Pouvez-vous ne pas simplement faire une sauvegarde et une restauration de l'ensemble de la base de données dans une base de données temporaire? Soit ça, ou vous aurez besoin pour gérer un tas de différentes tables temporaires.
Je pense que votre première déclaration "vous avez plusieurs tables avec des colonnes différentes, et vous avez besoin d'insérer ces données dans une table temporaire" est ce que je veux. Sur votre dernier relevé, c'est que signifie gérer un tas de différentes tables temporaires est la seule façon de le faire?
OriginalL'auteur Worgon | 2011-10-30
Vous devez vous connecter pour publier un commentaire.
Vous dites que vous voulez quelque chose comme
sans avoir à créer le temp de table avec des colonnes fixes en premier.
Ce serait le travail:
Vous n'avez pas à créer le temp de table ou de spécifier les colonnes d'abord, il suffit de sélectionner dans la table temporaire et il sera créé à la volée.
Il semble que vous voulez faire quelque chose de plus que cela... je ne peux pas tout à fait comprendre ce que c'est, mais il semble que peut-être la sélection de l'ensemble de vos données provenant de différentes tables dans une seule table temp (je ne sais pas pourquoi vous voulez le faire)... Si c'est le cas, alors
UNION
ouUNION ALL
devrait fonctionner. Vous pouvez toujours utiliser ces avec le créé dynamiquement table temp.La
null
ci-dessus est juste pour donner de la 2ème sélectionner le même nombre de colonnes que le premier (j'ai utilisé de sélectionner à partir de votre post); c'est une exigence pourUNION
.OriginalL'auteur Jeremy Wiggins