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

Trasposizione di grandi query

Non esiste ancora un bel modo per farlo in BigQuery, ma puoi farlo seguendo l'idea di seguito

Passaggio 1

Esegui sotto la query

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]
)

Di conseguenza, otterrai una stringa come quella di seguito (è formattata di seguito per motivi di leggibilità)

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]   

Passaggio 2

Basta eseguire sopra la query composta

Il risultato sarà come sotto

group   d_date1 d_date2  
group1  15      30      

Nota 1 :Il passaggio 1 è utile se si dispone di molti gruppi su cui ruotare troppo il lavoro manuale. In questo caso, il passaggio 1 ti aiuta a generare la tua query

Nota 2 :questi passaggi sono facilmente implementabili in qualsiasi client di tua scelta oppure puoi eseguirli semplicemente nell'interfaccia utente Web di BigQuery

Puoi vedere di più sul pivoting nei miei altri post.

Come ridimensionare il pivoting in BigQuery?
Nota:c'è un limite di 10.000 colonne per tabella, quindi sei limitato con 10.000 organizzazioni.
Puoi anche vedere di seguito come esempi semplificati (se uno sopra è troppo complesso/prolisso):
Come trasporre righe in colonne con una grande quantità di dati in BigQuery/SQL?
Come creare colonne variabili fittizie per migliaia di categorie in Google BigQuery?
Pivot campi ripetuti in BigQuery