sou novo em MYSQL e estou criando uma SP que esta me apresentando erro,
acredito que seja por causa do limite da variável.
SELECT
GROUP_CONCAT(DISTINCT
CONCAT('SUM(CASE WHEN subcategoria = "',
subcategoria,'" THEN total ELSE 0 end) AS "', subcategoria, '"'
)
)
INTO @sql
FROM v;
SET @sql = CONCAT('SELECT categoria, total ', @sql,'
FROM v ');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
separando o primeiro bloco o resultado é esse abaixo:
SUM(CASE WHEN subcategoria = "TESTE 01" THEN total ELSE 0 end) AS "TESTE 01",
SUM(CASE WHEN subcategoria = "TESTE 05" THEN total ELSE 0 end) AS "TESTE 05",
SUM(CASE WHEN subcategoria = "TESTE 02" THEN total ELSE 0 end) AS "TESTE 02",
SUM(CASE WHEN subcategoria = "TESTE 03" THEN total ELSE 0 end) AS "TESTE 03",
SUM(CASE WHEN subcategoria = "TESTE 04" THEN total ELSE 0 end) AS "TESTE 04"
acredito que seja esse resultado que a variável @sql não comporta.
Pergunta
Klebson souza
Olá pessoal,
sou novo em MYSQL e estou criando uma SP que esta me apresentando erro,
acredito que seja por causa do limite da variável.
SELECT
GROUP_CONCAT(DISTINCT
CONCAT('SUM(CASE WHEN subcategoria = "',
subcategoria,'" THEN total ELSE 0 end) AS "', subcategoria, '"'
)
)
INTO @sql
FROM v;
SET @sql = CONCAT('SELECT categoria, total ', @sql,'
FROM v ');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
separando o primeiro bloco o resultado é esse abaixo:
SUM(CASE WHEN subcategoria = "TESTE 01" THEN total ELSE 0 end) AS "TESTE 01",
SUM(CASE WHEN subcategoria = "TESTE 05" THEN total ELSE 0 end) AS "TESTE 05",
SUM(CASE WHEN subcategoria = "TESTE 02" THEN total ELSE 0 end) AS "TESTE 02",
SUM(CASE WHEN subcategoria = "TESTE 03" THEN total ELSE 0 end) AS "TESTE 03",
SUM(CASE WHEN subcategoria = "TESTE 04" THEN total ELSE 0 end) AS "TESTE 04"
acredito que seja esse resultado que a variável @sql não comporta.
Agradeço desde já por qualquer ajuda.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.