sql >> Database >  >> RDS >> Sqlserver

Dynamic Pivot Query zonder query op te slaan als String

Kort antwoord: nee.

Lang antwoord:

Nou, dat is nog steeds nee . Maar ik zal proberen uit te leggen waarom. Vanaf vandaag, wanneer u de query uitvoert, eist de DB-engine de structuur van de resultatenset (aantal kolommen, kolomnamen, gegevenstypen, enz.) Die de query zal retourneren. Daarom moet u de structuur van de resultatenset definiëren wanneer u gegevens uit DB vraagt. Denk er eens over na:heb je ooit een zoekopdracht uitgevoerd waarbij je de structuur van de resultatenset niet vooraf zou kennen?

Dat geldt ook als je select * , wat slechts een suikersyntaxis is. Aan het einde is de terugkerende structuur "alle kolommen in dergelijke tabel(len)".

Door een string samen te stellen, genereer je dynamisch de structuur die je wenst, voordat je om de resultaatset vraagt. Daarom werkt het.

Ten slotte moet u zich ervan bewust zijn dat het dynamisch samenstellen van de string theoretisch en mogelijk (hoewel niet waarschijnlijk) krijg je een resultatenset met oneindige kolommen. Dat is natuurlijk niet mogelijk en het zal mislukken, maar ik weet zeker dat je de implicaties hebt begrepen.

Bijwerken

Ik heb dit gevonden, wat de redenen versterkt waarom het niet werkt.

Hier :

Ik blijf hier zoeken en toevoegen.




  1. MySQL-tijdstempel naar Java-datumconversie

  2. Wat zijn de voordelen van MERGE ten opzichte van eenvoudig IF BESTAAT?

  3. Toegang geweigerd voor gebruiker 'gebruikersnaam'@'localhost' (met wachtwoord:YES) in C:\webdev\wamp\www\membershipSite\classes\Mysql.php op regel 9

  4. MySQl, 2 tabellen samenvoegen/samenvoegen zonder gedeelde kolom en bestellen op een gemeenschappelijke kolom