Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dynamiczne tworzenie kolumn z danych wierszy za pomocą funkcji Wybierz w BigQuery

Poniżej dotyczy BigQuery!

Uwaga:Twoje oczekiwania dotyczące nazw kolumn wyjściowych nie są poprawne!
Nazwa kolumny nie może zaczynać się od cyfry - więc w poniższym przykładzie - będę używał id_1, id_2 i id_3 zamiast 1, 2 i 3

SELECT
  SUM(CASE WHEN id = 1 THEN 1 END) AS id_1,
  SUM(CASE WHEN id = 2 THEN 1 END) AS id_2,
  SUM(CASE WHEN id = 3 THEN 1 END) AS id_3
FROM YourTable

Powyższy przykład zakłada, że ​​znasz z góry swoje identyfikatory, a jest ich bardzo mało, więc nie jest wielkim problemem ręczne napisanie kilku liczb wierszy z SUM(...) dla każdego identyfikatora

Jeśli tak nie jest - możesz najpierw wygenerować powyższe zapytanie programowo, uruchamiając poniższe zapytanie

SELECT 'SELECT ' + 
   GROUP_CONCAT_UNQUOTED(
      'SUM(CASE WHEN id = ' + STRING(id) + ' THEN 1 END) AS id_' + STRING(id)
   ) 
   + ' FROM YourTable'
FROM (
  SELECT id FROM (
    SELECT * FROM YourTable GROUP BY id ORDER BY id
)

w rezultacie - otrzymasz ciąg jak poniżej

SELECT SUM(CASE WHEN id = 1 THEN 1 END) AS id_1,SUM(CASE WHEN id = 2 THEN 1 END) AS id_2,SUM(CASE WHEN id = 3 THEN 1 END) AS id_3 FROM YourTable

Więc teraz po prostu skopiuj go i wklej do edytora zapytań i uruchom go

podobny przykład możesz zobaczyć tutaj - https://stackoverflow.com/a/36623258/5221944




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SET zmienną w instrukcji SELECT - MySQL

  2. wywołanie funkcji członkowskiej execute() na obiekcie niebędącym obiektem

  3. MySQL - Używanie If Then Else w MySQL UPDATE lub SELECT Query

  4. InnoDB Tabela jest pełna błąd

  5. Jak uznać NULL za datę MAX, zamiast ignorować ją w MySQL?