sql >> Base de Datos >  >> RDS >> Mysql

Transposición de consultas grandes

Todavía no hay una buena manera de hacer esto en BigQuery, pero puede hacerlo siguiendo la siguiente idea

Paso 1

Ejecutar debajo de la consulta

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

Como resultado, obtendrá una cadena como la siguiente (tiene el formato a continuación para facilitar la lectura)

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]   

Paso 2

Simplemente ejecute la consulta compuesta anterior

El resultado será como el siguiente

group   d_date1 d_date2  
group1  15      30      

Nota 1 :El paso 1 es útil si tiene muchos grupos para pivotar demasiado trabajo manual. En este caso, el Paso 1 te ayuda a generar tu consulta

Nota 2 :estos pasos se implementan fácilmente en cualquier cliente de su elección o simplemente puede ejecutarlos en la interfaz de usuario web de BigQuery

Puedes ver más sobre pivotar en mis otras publicaciones.

¿Cómo escalar Pivoting en BigQuery?
Tenga en cuenta que existe una limitación de 10 000 columnas por tabla, por lo que está limitado a 10 000 organizaciones.
También puede ver a continuación ejemplos simplificados (si el anterior es demasiado complejo/detallado):
¿Cómo transponer filas a columnas con una gran cantidad de datos en BigQuery/SQL?
¿Cómo crear columnas de variables ficticias para miles de categorías en Google BigQuery?
Pivotar campos repetidos en BigQuery