Usuário com melhor resposta
concatenar campos iguais conteudo diferente

Pergunta
-
Pessoal boa tarde,
Preciso de uma ajuda, eu tenho duas views que tem um campo igual com conteudos diferentes, essas views sao formadas
a partir de tabelas diferentes que tem um campo igual chamado (NUMRPS)
Cada tabela armazena uma sequencia de notas fiscais, porem nao sao numeros iguais.. exemplo:
Tabela1 Campo NUMRPS
1
2
3
4
8
9Tabela2 Campo NUMRPS
5
6
7
10
11As tabelas nao tem ligação nenhuma com a outra ou seja nao tem chave estrangeira, por isso foram feitas as views
e agora preciso fazer um select nas views para que possa pegar e concatenar os dois campos de forma que consiga
deixar dessa forma:NUMRPS
1
2
3
4
5
6
7
8
9
10
11Alguem pode me ajudar com isso?
Respostas
-
Luis,
A mesma quantidade de campo do primeiro "SELECT" tem que ser no segundo, isso também se aplica no "GROUP BY", verifica isso que deve funcionar.
- Marcado como Resposta Luis Padilha quarta-feira, 4 de outubro de 2017 19:30
-
Boa tarde,
Uma ideia é, faz uma tabela temporária com todos os campos em comum (tblwrirecepcao.PK_Recepcao as Titulo_RI,max(tblwrititulos.DataUltimoRegistro)asData_Envio,tblwrirecepcao.NumRPS as _NUMRPS)...
e em vez de fazer UNION, faça o insert nessa tabela temporária com o select do union com o resultado final da tabela temporária você retorna ela ao final com o order by _NUMRPS.
select * from #temporaria order by _NUMRPS
Att,
- Marcado como Resposta Luis Padilha segunda-feira, 9 de outubro de 2017 15:37
Todas as Respostas
-
SELECT NUMRPS FROM Tabela1 UNION ALL SELECT NUMRPS FROM Tabela2
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
- Sugerido como Resposta Kanaãm Luz Romero Rodrigues quarta-feira, 4 de outubro de 2017 18:05
-
seria mais ou menos isso que preciso, mas deu erro:
set dateformat dmy
select tblwrirecepcao.PK_Recepcao as Titulo_RI, max(tblwrititulos.DataUltimoRegistro) as Data_Envio, tblwrirecepcao.NumRPS,
tblwrirecepcao.VlrTotCustas
from tblwrititulos
inner join tblwrirecepcao on tblwrirecepcao.PK_Recepcao = tblwrititulos.FK_tblWRIRecepcaoRecepcao
where tblwrirecepcao.NumRPS > 600
and tblwrirecepcao.VlrTotCustas <> '0.00'
group by tblwrititulos.DataUltimoRegistro,tblwrirecepcao.PK_Recepcao,tblwrirecepcao.NumRPS,
tblwrirecepcao.VlrTotCustas
order by tblwrirecepcao.NumRPS asc
UNION ALL
select tblwricertidao.Pk_NrPedido As Certidao_RI, max(tblwricertidao.DataFinalRetirada) as Data_Certidao_Enviada, tblwricertidao.NumRPS
from tblwricertidao
where tblwricertidao.NumRPS > 600
and tblwricertidao.VlrTotalCota <> '0.00'
group by tblwricertidao.NumRPS, tblwricertidao.Pk_NrPedido,tblwricertidao.DataFinalRetirada
order by tblwricertidao.NumRPS
-
Boa tarde Luís!
A resposta do amigo acima está perfeita, mas pelo sentido da sua publicação eu acrescentaria apenas um "ORDER BY" para ordenar da forma que você descreveu, então ficaria assim:
SELECT NUMRPS FROM Tabela1 WITH(NOLOCK)
UNION ALL
SELECT NUMRPS FROM Tabela2 WITH(NOLOCK)
ORDER BY NUMRPS ASC;Acrescentei o "WITH(NOLOCK)" para otimizar sua busca, caso tenha muito registro.
Espero ter ajudado, abraços!
-
-
Luis, poe o "ORDER BY" somente no final de tudo, pois usando o "UNION ALL" ele acaba anulando, usando seu exemplo ficaria assim:
select tblwrirecepcao.PK_Recepcao as Titulo_RI,max(tblwrititulos.DataUltimoRegistro)asData_Envio,tblwrirecepcao.NumRPS as _NUMRPS,
from tblwrititulos
inner join tblwrirecepcao on tblwrirecepcao.PK_Recepcao =tblwrititulos.FK_tblWRIRecepcaoRecepcao
where tblwrirecepcao.NumRPS > 600
and tblwrirecepcao.VlrTotCustas <> '0.00'
group by tblwrititulos.DataUltimoRegistro,tblwrirecepcao.PK_Recepcao,tblwrirecepcao.NumRPS,
tblwrirecepcao.VlrTotCustas
UNION ALL
select tblwricertidao.Pk_NrPedido As Certidao_RI,max(tblwricertidao.DataFinalRetirada)asData_Certidao_Enviada,tblwricertidao.NumRPS as _NUMRPS
from tblwricertidao
where tblwricertidao.NumRPS > 600
and tblwricertidao.VlrTotalCota <> '0.00'
group by tblwricertidao.NumRPS, tblwricertidao.Pk_NrPedido,tblwricertidao.DataFinalRetirada
order by_NUMRPS
Se você notar, removi um campo do primeiro select, pois quando se faz "UNION ALL" os campos do "SELECT" tem que ser identico.
- Editado Luiz Lenire quarta-feira, 4 de outubro de 2017 18:27
-
-
Luis,
A mesma quantidade de campo do primeiro "SELECT" tem que ser no segundo, isso também se aplica no "GROUP BY", verifica isso que deve funcionar.
- Marcado como Resposta Luis Padilha quarta-feira, 4 de outubro de 2017 19:30
-
Boa tarde,
Uma ideia é, faz uma tabela temporária com todos os campos em comum (tblwrirecepcao.PK_Recepcao as Titulo_RI,max(tblwrititulos.DataUltimoRegistro)asData_Envio,tblwrirecepcao.NumRPS as _NUMRPS)...
e em vez de fazer UNION, faça o insert nessa tabela temporária com o select do union com o resultado final da tabela temporária você retorna ela ao final com o order by _NUMRPS.
select * from #temporaria order by _NUMRPS
Att,
- Marcado como Resposta Luis Padilha segunda-feira, 9 de outubro de 2017 15:37