"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como criar uma tabela dinâmica dinâmica no MySQL com nomes de colunas inteiras?

Como criar uma tabela dinâmica dinâmica no MySQL com nomes de colunas inteiras?

Publicado em 2025-01-20
Navegar:254

How to Create a Dynamic Pivot Table in MySQL with Integer Column Names?

Tabela dinâmica dinâmica do MySQL com nomes de colunas inteiras

Criar uma tabela dinâmica dinâmica com nomes de colunas inteiras no MySQL representa um pequeno desafio. Ao executar a consulta fornecida, você poderá encontrar um erro se os valores de user_id forem inteiros. Para resolver esse problema, precisamos agrupar os valores de user_id entre crases (`).

A consulta SQL ajustada fica assim:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when user_id = ''',
      user_id,
      ''' then score end) AS `',
      user_id, '`'
    )
  ) INTO @sql
FROM  measure2;

SET @sql = CONCAT('SELECT inspection_date, ', @sql, ' 
                  FROM measure2 
                  GROUP BY inspection_date');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

A principal modificação aqui é a adição de crases em torno dos valores user_id na instrução GROUP_CONCAT. Ao fazer isso, garantimos que os valores de user_id sejam tratados como strings em vez de nomes de colunas.

SQL Fiddle Demo: https://sqlfiddle.com/#!2/eab24/ 4

Agora, mesmo com valores inteiros de user_id, a tabela dinâmica dinâmica será gerada com sucesso.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3