Fórum Concatenar na Mesma tabela #604494
13/08/2019
0
tabela carga:
NroAjudante, OrdemCarga, CodFuncionario
1, 223, 123
2, 223, 234
1, 224, 543
1, 225, 789
2, 225, 456
tabela funcionário
CodFuncionario, NomeFuncionario, ....
123, NomeFuncionario123
234, NomeFuncionario234
543 NomeFuncionario543
Gostaria de saber se é possível concatenar o código do funcionário quando a ordem de carga possuir mais de um funcionário e apresentar o resultado da seguinte forma:
OrdemCarga, CodFuncionario
223, NomeFuncionario123 / NomeFuncionario234
224, NomeFuncionario543
225, NomeFuncionario789 / NomeFuncionario456
Rafael Gomes
Curtir tópico
+ 0Posts
13/08/2019
Hiago
Gostei + 0
13/08/2019
Jothaz
Gostei + 0
13/08/2019
Jothaz
Veja se atende.
create table #carga (NroAjudante int, OrdemCarga int, CodFuncionario int)
create table #funcionario(CodFuncionario int, NomeFuncionario varchar(50))
insert into #carga values (1, 223, 123)
insert into #carga values (2, 223, 234)
insert into #carga values (1, 224, 543)
insert into #carga values (1, 225, 789)
insert into #carga values (2, 225, 456)
insert into #funcionario values (123, 'NomeFuncionario123')
insert into #funcionario values (234, 'NomeFuncionario234')
insert into #funcionario values (543, 'NomeFuncionario543')
insert into #funcionario values (789, 'NomeFuncionario789')
insert into #funcionario values (456, 'NomeFuncionario456')
Select OrdemCarga, c.CodFuncionario, NomeFuncionario
into #temp
from #carga c
left join #funcionario f on c.CodFuncionario = f.CodFuncionario
order by c.OrdemCarga, c.CodFuncionario
select * from #temp
-- Concatenando
SELECT OrdemCarga,
COALESCE(
(SELECT CAST(NomeFuncionario AS VARCHAR(20)) + ';' AS [text()]
FROM #temp AS O
WHERE O.OrdemCarga = C.OrdemCarga
ORDER BY OrdemCarga
FOR XML PATH(''), TYPE).value('.[1]', 'VARCHAR(MAX)'), '') AS Produtos
FROM #temp AS C
GROUP BY OrdemCarga
drop table #carga
drop table #funcionario
drop table #temp
Resultado:
OrdemCarga Produtos ----------- ------------------------------------------------------------------------------- 223 NomeFuncionario123;NomeFuncionario234; 224 NomeFuncionario543; 225 NomeFuncionario456;NomeFuncionario789;
Gostei + 0
13/08/2019
Rafael Gomes
eu preciso de select que me retorne os nomes dos funcionários concatenados quando uma carga possui mais de um funcionário
Gostei + 0
13/08/2019
Rafael Gomes
oracle
Gostei + 0
13/08/2019
Rafael Gomes
SELECT OrdemCarga, LISTAGG( NomeFuncionario, ' / ')
WITHIN GROUP(ORDER BY OrdemCarga DESC) FROM carga, funcionario
GROUP BY OrdemCarga;
Obrigado a todos pelo auxilio;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)