Usuário com melhor resposta
Como fazer para agrupar valores varchar em uma única linha.

Pergunta
-
Possuo uma tabela chamada envio_email, onde possuo os campos:
codigo tipo valor
1 email_To testeA@teste.com.br
2 email_CC testeB@teste.com.br
3 email_CCO testeC@teste.com.br
Preciso fazer insert em outra tabela, porém está sendo inserido 3 linhas.
Este é o meu select:
insert into......
select distinct 'admin@admin.com','Usuario_1',
case when codigo = 1 then valor else '' end as a,
case when codigo = 2 then valor else '' end as b,
case when codigo = 3 then valor else '' end as c
from envio_email where codigo in (1,2,3)
group by codigo, valorEstá inserindo 3 linhas:
email_remetente nome_remetente email_To email_CC emailCCO
admin@admin.com Usuario_1 testeC@teste.com.br
admin@admin.com Usuario_1 testeB@teste.com.br
admin@admin.com Usuario_1 testeA@teste.com.br
Preciso que fique assim:
email_remetente nome_remetente email_To email_CC emailCCO
admin@admin.com Usuario_1 testeA@teste.com.br testeB@teste.com.br testeC@teste.com.br
Como posso fazer ?
- Editado Fe RT quarta-feira, 4 de novembro de 2015 16:10
Respostas
-
Boa tarde,
Experimente mais ou menos dessa forma:
insert into --... select 'admin@admin.com', 'Usuario_1', max(case when codigo = 1 then valor end) as a, max(case when codigo = 2 then valor end) as b, max(case when codigo = 3 then valor end) as c from envio_email where codigo in (1,2,3)
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Fe RT quarta-feira, 4 de novembro de 2015 16:38
Todas as Respostas
-
Boa tarde,
Experimente mais ou menos dessa forma:
insert into --... select 'admin@admin.com', 'Usuario_1', max(case when codigo = 1 then valor end) as a, max(case when codigo = 2 then valor end) as b, max(case when codigo = 3 then valor end) as c from envio_email where codigo in (1,2,3)
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Fe RT quarta-feira, 4 de novembro de 2015 16:38
-
Use o PIVOT:
create table mail (cd_campo int, dc_ident varchar(50),vl_campo varchar(50)) insert into mail values (1,'email_To','testeA@teste.com.br'),(2,'email_CC','testeB@teste.com.br'),(3,'email_CCO','testeC@teste.com.br') select email_remetente, nome_remetente, email_to,email_cc,email_cco from ( select 'admin@teste.com' email_remetente,'Admin' nome_remetente, vl_campo,dc_ident from mail ) as pvt PIVOT (max(vl_campo) FOR dc_ident in (email_to,email_cc,email_cco)) as pivoteado
[]'s!
/* Logan Destefani Merazzi - DBA | @LoganMerazzi | http://www.merazzi.eti.br
Se a resposta for útil, vote nela. Se resolveu, marque-a como resposta. */ -