sql >> Database >  >> RDS >> Mysql

Grote zoekopdracht transponeren

Er is nog geen goede manier om dit in BigQuery te doen, maar je kunt het doen volgens onderstaand idee

Stap 1

Voer onderstaande zoekopdracht uit

SELECT 'SELECT [group], ' + 
   GROUP_CONCAT_UNQUOTED(
      'SUM(IF([date] = "' + [date] + '", value, NULL)) as [d_' + REPLACE([date], '/', '_') + ']'
   ) 
   + ' FROM YourTable GROUP BY [group] ORDER BY [group]'
FROM (
  SELECT [date] FROM YourTable GROUP BY [date] ORDER BY [date]
)

Als resultaat krijg je een string zoals hieronder (het is hieronder geformatteerd omwille van de leesbaarheid)

SELECT 
    [group], 
    SUM(IF([date] = "date1", value, NULL)) AS [d_date1],
    SUM(IF([date] = "date2", value, NULL)) AS [d_date2] 
FROM YourTable 
GROUP BY [group] 
ORDER BY [group]   

Stap 2

Voer gewoon de samengestelde zoekopdracht uit

Het resultaat is zoals hieronder

group   d_date1 d_date2  
group1  15      30      

Opmerking 1 :Stap 1 is handig als je veel groepen hebt om te draaien, dus teveel handmatig werk. In dit geval - Stap 1 helpt u bij het genereren van uw zoekopdracht

Opmerking 2 :deze stappen zijn eenvoudig te implementeren in elke client van uw keuze of u kunt ze gewoon uitvoeren in de BigQuery Web UI

Je kunt meer zien over draaien in mijn andere berichten.

Hoe kan ik draaien in BigQuery schalen?
Let op:er is een limiet van 10.000 kolommen per tabel - dus u bent beperkt tot 10.000 organisaties.
U kunt hieronder ook vereenvoudigde voorbeelden zien (als bovenstaande te complex/uitgebreid is):
Hoe transponeer ik rijen naar kolommen met een grote hoeveelheid gegevens in BigQuery/SQL?
Hoe maak je dummy variabele kolommen voor duizenden categorieën in Google BigQuery?
Herhaalde velden draaien in BigQuery




  1. KIES * UIT meerdere tabellen. MySQL

  2. Hoe ELT() werkt in MariaDB

  3. Ontdek de oorzaken en oplossingen van corruptie in de SQL Server-database

  4. Getallen opmaken als Romeinse cijfers in Oracle