sql >> Database teknologi >  >> RDS >> Sqlserver

Dynamisk pivotforespørgsel uden lagring af forespørgsel som streng

Kort svar: nej.

Langt svar:

Nå, det er stadig nej . Men jeg vil prøve at forklare hvorfor. Fra i dag, når du kører forespørgslen, kræver DB-motoren at være opmærksom på resultatsætstrukturen (antal kolonner, kolonnenavne, datatyper osv.), som forespørgslen vil returnere. Derfor skal du definere strukturen af ​​resultatsættet, når du spørger data fra DB. Tænk over det:har du nogensinde kørt en forespørgsel, hvor du ikke kender resultatsætstrukturen på forhånd?

Det gælder også, selvom du select * , som blot er en sukkersyntaks. I slutningen er den returnerende struktur "alle kolonner i sådanne tabeller".

Ved at samle en streng genererer du dynamisk den struktur, du ønsker, før du beder om resultatsættet. Derfor virker det.

Endelig skal du være opmærksom på, at samling af strengen dynamisk kan teoretisk og potentielt (selv om det ikke er sandsynligt) får du et resultatsæt med uendelige kolonner. Det er selvfølgelig ikke muligt, og det vil mislykkes, men jeg er sikker på, at du forstod implikationerne.

Opdater

Jeg fandt dette, hvilket forstærker årsagerne til, at det ikke virker.

Her :

Jeg bliver ved med at kigge og tilføje her.




  1. fil eller LOB-operation FILEOPEN mislykkedes ved indlæsning af en XML-fil i en tabel

  2. Ikke-genkendt mulighed:-MaxMetaspaceSize=256m

  3. Sådan fanges og genkastes alle fejl i MySQL

  4. PostgreSQL-forespørgsel WHERE-datoen er mere end 3 år gammel