Concatenar na Mesma tabela
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
Posts
13/08/2019
Hiago
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;
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
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;
Clique aqui para fazer login e interagir na Comunidade :)