sql >> Databasteknik >  >> RDS >> Mysql

Stor fråga Transpose

Det finns inget bra sätt att göra detta i BigQuery än, men du kan göra det enligt nedanstående idé

Steg 1

Kör nedanstående fråga

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

Som ett resultat - du kommer att få en sträng som nedan (den är formaterad nedan för läsbarhetens skull)

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]   

Steg 2

Kör bara ovanstående fråga

Resultatet blir som nedan

group   d_date1 d_date2  
group1  15      30      

Anmärkning 1 :Steg 1 är till hjälp om du har många grupper att vända så för mycket av manuellt arbete. I det här fallet - Steg 1 hjälper dig att generera din fråga

Anmärkning 2 :dessa steg är lätta att implementera i valfri klient eller så kan du bara köra dem i BigQuery Web UI

Du kan se mer om pivotering i mina andra inlägg.

Hur skalar man pivotering i BigQuery?
Observera – det finns en begränsning på 10 000 kolumner per tabell - så du är begränsad med 10 000 organisationer.
Du kan även se nedan som förenklade exempel (om en ovan är för komplex/omfattande):
Hur överför man rader till kolumner med stora mängder data i BigQuery/SQL?
Hur skapar man dummy-variabelkolumner för tusentals kategorier i Google BigQuery?
Pivota upprepade fält i BigQuery




  1. Finns det något sätt att "lyssna" efter en databashändelse och uppdatera en sida i realtid?

  2. Hur man stänger av mysql-fel från att visas på skärmen i CodeIgniter

  3. Cloud9 postgres

  4. SQL Server använder hög CPU vid sökning i nvarchar-strängar