2010-12-15 12 views
0

Si je voulais décrire une table MSSQL, je pouvais faire:En SQL Comment puis-je décrire la structure d'un ensemble de résultats?

exec sp_columns @table_name 

Comment pourrais-je faire la même chose avec un jeu de résultats? Dire que j'avais quelque chose comme

SELECT DISTINCT 
t3.ID, 
t4.ID 
FROM 
t2 INNER JOIN 
t3 on t3.ID = t2.t3ID INNER JOIN 
t4 on t4.ID = t3.t4ID 

et je voulais lancer quelque chose comme

exec sp_columns @table_name = (SELECT DISTINCT 
t3.ID, 
t4.ID 
FROM 
t2 INNER JOIN 
t3 on t3.ID = t2.t3ID INNER JOIN 
t4 on t4.ID = t3.t4ID 
) 

Afin d'obtenir une description de mon jeu de résultats.

+0

pourquoi voudriez-vous faire cela? –

+0

Parce que, finalement, la requête va dans une table temporaire et je ne veux pas comprendre manuellement ce que c'est afin que je puisse d'abord créer la table temporaire. C'est beaucoup plus complexe que l'exemple de tableau que j'ai mis ici. S'il y a d'autres techniques, je suis tous les yeux. – Matt

Répondre

2

On dirait que vous voulez la fonctionnalité de sp_columns pour votre résultat ad hoc.

Il semble que vous créez une table temporaire à partir de cet ensemble de résultats. Envisagez d'utiliser SELECT INTO à la place. Vous n'aurez pas à connaître la structure.

Voici une preuve de concept:

SELECT * INTO ##newtable 
FROM (SELECT DISTINCT 
      t3.ID, 
      t4.ID 
     FROM 
     t2 INNER JOIN 
     t3 on t3.ID = t2.t3ID INNER JOIN 
     t4 on t4.ID = t3.t4ID 
    ) as b 

SELECT * FROM ##newtable 
+0

Seule mise en garde est la table (temporaire ou autre) ne peut pas exister avant l'instruction 'SELECT ... INTO'. –

+0

@OMG: correct, merci pour la clarification! –

Questions connexes