Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Dynamische Pivot-Abfrage ohne Speicherung der Abfrage als String

Kurze Antwort: nein.

Lange Antwort:

Nun, das ist immer noch nein . Aber ich werde versuchen zu erklären, warum. Wenn Sie die Abfrage ausführen, verlangt die DB-Engine ab heute, dass Sie sich der Struktur der Ergebnismenge (Anzahl der Spalten, Spaltennamen, Datentypen usw.) bewusst sind, die die Abfrage zurückgibt. Daher müssen Sie die Struktur der Ergebnismenge definieren, wenn Sie Daten von DB anfordern. Denken Sie darüber nach:Haben Sie jemals eine Abfrage ausgeführt, bei der Sie die Ergebnismengenstruktur vorher nicht kennen würden?

Das gilt auch, wenn Sie select * , was nur eine Zuckersyntax ist. Am Ende ist die zurückgegebene Struktur "alle Spalten in solchen Tabellen".

Indem Sie eine Zeichenfolge zusammenstellen, generieren Sie dynamisch die gewünschte Struktur, bevor Sie nach der Ergebnismenge fragen. Deshalb funktioniert es.

Schließlich sollten Sie sich darüber im Klaren sein, dass das dynamische Zusammensetzen der Zeichenfolge theoretisch und möglicherweise möglich ist (obwohl nicht wahrscheinlich) erhalten Sie eine Ergebnismenge mit unendlichen Spalten. Natürlich ist das nicht möglich und es wird fehlschlagen, aber ich bin sicher, Sie haben die Auswirkungen verstanden.

Aktualisieren

Ich habe dies gefunden, was die Gründe verstärkt, warum es nicht funktioniert.

hier :

Ich werde weiter suchen und hier etwas hinzufügen.