CONCATENAR 2 OU 3 REGISTROS NUMA VARIAVEL
Bom dia Galera,
Possuo os seguinte código:
Exibindo no grid todos os meus pedidos e se for ou não emitido NFCe (tabela: TbNFCe).... tudo funcionando
Preciso exibir em uma celular no grid todas as formas de pagamentos daquele pedido... tem pedido como somente uma forma de pagamento (exemplo: Dinheiro) e existe pedidos com até 3 formas de pagamento (Dinheiro, Pix e Cartão)...
Então preciso mostrar numa das celulas do grid isso... a forma de pagamento e ser for mais de uma, ele mostrar separado com virgula.
A tabela que possui as parcelas e a forma de pagamento é essa:
Tenho que relaciona pelo COD_PEDIDO e concatenar a FORMA_PGTO caso haja mais de um registro
Possuo os seguinte código:
SELECT DISTINCT pedidos.COD_PEDIDO, (CASE WHEN TbNFCe.NFCeEnviada = 1 THEN 'SIM' ELSE '' END) AS Var_StatusNFCE, (CASE WHEN TbNFCe.Inutilizada = 1 THEN 'SIM' ELSE '' END) AS Var_NFCEInutilizada
FROM pedidos INNER JOIN cliente ON pedidos.COD_CLIENTE = cliente.CODIGO LEFT OUTER JOIN TbNFCe ON TbNFCe.Num_OS_VD_Origem = pedidos.COD_PEDIDO
Exibindo no grid todos os meus pedidos e se for ou não emitido NFCe (tabela: TbNFCe).... tudo funcionando
Preciso exibir em uma celular no grid todas as formas de pagamentos daquele pedido... tem pedido como somente uma forma de pagamento (exemplo: Dinheiro) e existe pedidos com até 3 formas de pagamento (Dinheiro, Pix e Cartão)...
Então preciso mostrar numa das celulas do grid isso... a forma de pagamento e ser for mais de uma, ele mostrar separado com virgula.
A tabela que possui as parcelas e a forma de pagamento é essa:
SELECT COD_PEDIDO, FORMA_PGTO FROM parcelas
Tenho que relaciona pelo COD_PEDIDO e concatenar a FORMA_PGTO caso haja mais de um registro
Alterado em 11/07/2023 13:49:24
Putz, eu usei muito isso em Oracle no passado.
Veja se isso te ajuda:
E pegando distintos (caso tenha repetições)
Ah, lembrei !!!
È algo assim (SQL SERVER)
Dá uma conferida aqui, o operador que eu estava tentando lembrar o nome é o listagg
https://stackoverflow.com/questions/15477743/listagg-in-sqlserver
Veja se isso te ajuda:
SELECT city, GROUP_CONCAT (name) as "NAMES"
FROM employee group by city;
E pegando distintos (caso tenha repetições)
SELECT city, GROUP_CONCAT (DISTINCT name) as "UNIQUE NAMES"
FROM employee group by city;
Ah, lembrei !!!
È algo assim (SQL SERVER)
SELECT DISTINCT
SUBSTRING(
STUFF((
SELECT DISTINCT ',' + [FieldB]
FROM tablename
ORDER BY 1
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)')
, 1, 0, '')
, 2, 9999)
FROM tablename
Dá uma conferida aqui, o operador que eu estava tentando lembrar o nome é o listagg
https://stackoverflow.com/questions/15477743/listagg-in-sqlserver
Boa tarde, Estou tentando primeiro concatenar os dados
Não deu certo desse jeito que me passou assim, fiz umas modificações e ficou assim:
Porem apresente o seguinte erro ao executar:
Erro na cláusula WHERE próxima a '('.
Não é possível analisar o texto da consulta.
Após dar um OK na msg de erro, ele me mostra os dados concatenado correto....
Alguem sabe me explicar porque está dando esse erro?
Não deu certo desse jeito que me passou assim, fiz umas modificações e ficou assim:
SELECT DISTINCT SUBSTRING((SELECT ', ' + parc.FORMA_PGTO AS [text()] FROM parcelas parc where cod_pedido = 29965
FOR XML PATH ('')), 2, 8000) AS texto FROM parcelas
Porem apresente o seguinte erro ao executar:
Erro na cláusula WHERE próxima a '('.
Não é possível analisar o texto da consulta.
Após dar um OK na msg de erro, ele me mostra os dados concatenado correto....
Alguem sabe me explicar porque está dando esse erro?
Conseguir resolver!
obg, Webmaster
...
SUBSTRING((SELECT ', ' + P.FORMA_PGTO FROM dbo.parcelas P WHERE P.COD_PEDIDO = pedidos.COD_PEDIDO FOR XML PATH ('')), 2, 1000) var_Pagamento
...
obg, Webmaster
Tópico encerrado , respostas não são mais permitidas