Mysql
 sql >> Base de données >  >> RDS >> Mysql

Transposer Big Query

Il n'y a pas encore de bonne façon de faire cela dans BigQuery, mais vous pouvez le faire en suivant l'idée ci-dessous

Étape 1

Exécuter la requête ci-dessous

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

En conséquence - vous obtiendrez une chaîne comme ci-dessous (elle est formatée ci-dessous pour des raisons de lisibilité)

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]   

Étape 2

Exécutez juste au-dessus de la requête composée

Le résultat sera comme ci-dessous

group   d_date1 d_date2  
group1  15      30      

Remarque 1 :L'étape 1 est utile si vous avez de nombreux groupes pour faire pivoter trop de travail manuel. Dans ce cas, l'étape 1 vous aide à générer votre requête

Remarque 2  :ces étapes sont facilement implémentées dans n'importe quel client de votre choix ou vous pouvez simplement les exécuter dans l'interface utilisateur Web de BigQuery

Vous pouvez en savoir plus sur le pivotement dans mes autres articles.

Comment faire évoluer Pivoting dans BigQuery ?
Veuillez noter qu'il existe une limite de 10 000 colonnes par table. Vous êtes donc limité à 10 000 organisations.
Vous pouvez également voir ci-dessous des exemples simplifiés (si l'un d'entre eux est trop complexe/verbeux) :
Comment transposer des lignes en colonnes avec une grande quantité de données dans BigQuery/SQL ?
Comment créer des colonnes de variables factices pour des milliers de catégories dans Google BigQuery ?
Faire pivoter les champs répétés dans BigQuery