sql >> Database teknologi >  >> RDS >> Mysql

Transponering af stor forespørgsel

Der er endnu ingen god måde at gøre dette på i BigQuery, men du kan gøre det efter nedenstående idé

Trin 1

Kør nedenstående forespørgsel

VÆLG 'VÆLG [gruppe], ' + GROUP_CONCAT_UNQUOTED( 'SUM(HVIS([dato] ="' + [dato] + '", værdi, NULL)) som [d_' + REPLACE([dato ], '/', '_') + ']' ) + ' FRA dit bord GRUPPE EFTER [gruppe] BESTIL EFTER [gruppe]'FRA ( VÆLG [dato] FRA dit bord GRUPPE EFTER [dato] BESTIL EFTER [dato]) 

Som et resultat - vil du få en streng som nedenfor (den er formateret nedenfor for læsbarhedens skyld)

VÆLG [gruppe], SUM(HVIS([dato] ="dato1", værdi, NULL)) SOM [d_dato1], SUM(HVIS([dato] ="dato2", værdi, NULL)) SOM [d_date2] FRA DinTabel GRUPPE EFTER [gruppe] BESTIL EFTER [gruppe]

Trin 2

Bare kør ovenstående sammensatte forespørgsel

Resultatet bliver som nedenfor

gruppe d_date1 d_date2 gruppe1 15 30  

Bemærkning 1 :Trin 1 er nyttigt, hvis du har mange grupper, der skal dreje for meget manuelt arbejde. I dette tilfælde - Trin 1 hjælper dig med at generere din forespørgsel

Bemærkning 2 :Disse trin implementeres nemt i enhver klient efter eget valg, eller du kan bare køre dem i BigQuery Web UI

Du kan se mere om pivotering i mine andre indlæg.

Hvordan skalerer man pivoting i BigQuery?
Bemærk venligst – der er en begrænsning på 10.000 kolonner pr. tabel - så du er begrænset med 10.000 organisationer.
Du kan også se nedenfor som forenklede eksempler (hvis ovenstående er for kompleks/ordbundet):
Hvordan transponeres rækker til kolonner med store mængder af data i BigQuery/SQL?
Hvordan opretter man dummy-variable kolonner for tusindvis af kategorier i Google BigQuery?
Pivot gentagne felter i BigQuery




  1. Send en liste over heltal fra C# til Oracles lagrede procedure

  2. Mysql::Fejl:Den angivne nøgle var for lang; max nøglelængde er 1000 bytes

  3. En oversigt over jobplanlægningsværktøjer til PostgreSQL

  4. Sådan fungerer Cosd() i PostgreSQL