Mysql
 sql >> база данни >  >> RDS >> Mysql

Динамично създаване на колони от данни за редове с помощта на Select in Bigquery

По-долу е за BigQuery!

Моля, обърнете внимание:вашите очаквания относно имената на изходните колони не са правилни!
Името на колоната не може да започва с цифра - така че в примера по-долу - ще използвам id_1, id_2 и id_3 вместо 1, 2 и 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

Примерът по-горе предполага, че знаете предварително вашите идентификационни номера и има много малко от тях, така че не е голяма работа да напишете ръчно няколко броя реда със SUM(...) за всеки идентификатор

Ако това не е така - можете първо да генерирате по-горе заявка програмно, като изпълните под заявка

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
)

като резултат - ще получите низ като по-долу

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

Така че сега просто го копирайте и поставете в редактора на заявки и го стартирайте

можете да видите подобен пример тук - 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. Какъв е препоръчителният начин за свързване с MySQL от Go?

  2. MySQL еквивалент за слушане на известие

  3. MySQL:Кога са наистина необходими Flush Privileges в MySQL?

  4. Как да разбера дали заявка за MySQL UPDATE е неуспешна, защото предоставената информация съвпада с данни, които вече са в базата данни?

  5. Групирайте mysql заявката на интервали от 15 минути