2010-12-15 4 views
0

Wenn ich eine Tabelle in MSSQL beschreiben wollte, könnte ich tun:In SQL Wie kann ich die Struktur einer Ergebnismenge beschreiben?

exec sp_columns @table_name 

Wie kann ich das Gleiche mit einer Ergebnismenge zu tun? sagen, dass ich so etwas wie

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

hatte und wollte so etwas wie

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 
) 

laufen, um eine Beschreibung meines Ergebnismenge zu erhalten.

+0

warum wollen Sie das tun? –

+0

Da die Abfrage letztlich in eine temporäre Tabelle geht und ich nicht manuell herausfinden möchte, was es ist, kann ich zuerst die temporäre Tabelle erstellen. Es ist viel komplexer als die Beispieltabelle, die ich hier anführe. Wenn es andere Techniken gibt, bin ich alle Augen. – Matt

Antwort

2

Klingt, als ob Sie die Funktionalität von sp_columns für Ihre Adhoc-Ergebnismenge möchten.

Es klingt so, als würden Sie aus dieser Ergebnismenge eine temporäre Tabelle erstellen. Verwenden Sie stattdessen SELECT INTO. Du wirst die Struktur nicht kennen müssen.

Hier ist ein Proof of 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

Einziger Vorbehalt ist, dass die Tabelle (temp oder anders) vor der Anweisung 'SELECT ... INTO' nicht existieren kann. –

+0

@OMG: richtig, danke für die Klärung! –

Verwandte Themen