sql >> Databáze >  >> RDS >> Mysql

Big Query Transpose

V BigQuery zatím neexistuje žádný pěkný způsob, jak to udělat, ale můžete to udělat podle níže uvedeného nápadu

Krok 1

Spustit pod dotazem

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

Výsledkem je, že získáte řetězec jako níže (z důvodu čitelnosti je formátován níže)

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]   

Krok 2

Stačí spustit nad složeným dotazem

Výsledek bude jako níže

group   d_date1 d_date2  
group1  15      30      

Poznámka 1 :Krok 1 je užitečný, pokud máte mnoho skupin, na které je potřeba tolik manuální práce. V tomto případě – Krok 1 vám pomůže vygenerovat dotaz

Poznámka 2 :tyto kroky lze snadno implementovat v libovolném klientovi podle vašeho výběru nebo je můžete jednoduše spustit ve webovém uživatelském rozhraní BigQuery

Více o pivotování můžete vidět v mých dalších příspěvcích.

Jak škálovat Pivoting v BigQuery?
Upozorňujeme – existuje omezení na 10 000 sloupců na tabulku – takže jste omezeni na 10 000 organizací.
Níže můžete také vidět zjednodušené příklady (pokud je výše uvedený příliš složitý/podrobný):
Jak v BigQuery/SQL transponovat řádky do sloupců s velkým množstvím dat?
Jak vytvořit fiktivní sloupce proměnných pro tisíce kategorií v Google BigQuery?
Pivot opakovaných polí v BigQuery




  1. SQL Server ekvivalentní datovému typu MySQL enum?

  2. PostgreSQL UNIX doménové sokety vs TCP sokety

  3. Jak pracovat s databázemi PostgreSQL

  4. Ovladač QPSQL není načten Qt