Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

asp.net

Problemas com o Union

Recommended Posts

:::::::::::::::::::::Select

 

Select agencias.nome as agencia from chamados INNER Join agencias ON chamados.unidade = agencias.codigo

UNION

Select Distinct(fechamento.codigo) as codigo

from fechamento

where fechamento.codigo IN (Select chamados.codigo from chamados) and fechamento.dtfechamento <>" " and fechamento.dtfechamento Is Not Null

 

::::::::::::::::::::Resultado

Como pode ser visto ele tá pegando o nome de uma coluna, no caso da tabela agencia e nos resultados colocando os valores da outra tabela o que está de errado no meu comando?

 

agencia ------------------------------------------------------------------------------------------------

00000000000006510454

00000000000007168139

00000000000007200792

00000000000007844004

00000000000007834999

00000000000007653858

Compartilhar este post


Link para o post
Compartilhar em outros sites

Select distinct fechamento.codigo as codigo, agencias.nome as agencia from chamados INNER Join agencias ON chamados.unidade = agencias.codigoLEFT Join fechamento ON fechamento.codigo = chamados.codigowhere fechamento.dtfechamento <>" " and fechamento.dtfechamento Is Not Nulltente fazer desta forma, o union está sendo utilizado de forma incorreta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara eu fiz assimCREATE PROCEDURE relatorio AS Select chamados.unidade as agencia, fechamento.codigo as codigo, fechamento.dtconferencia as data_conferencia, fechamento.dtfatura as data_fatura, Sum(Convert(numeric(10,2),fechamento.valortotal)/100) as valor_total, fechamento.deslocamento as delocamento, fechamento.quantidade as quantidadefrom fechamento inner join chamados on fechamento.codigo = chamados.codigoInner join agencias on agencias.codigo = chamados.unidadewhere (fechamento.valortotal is not null) and (fechamento.valortotal <>" ") and (fechamento.codigo is not null) and (fechamento.dtconferencia is not null) and (fechamento.dtconferencia <>" ") and (fechamento.dtfatura is not null) and (fechamento.dtfatura <> " ")group by chamados.unidade, fechamento.codigo, fechamento.dtconferencia, fechamento.dtfatura, fechamento.deslocamento, fechamento.quantidadeorder by chamados.unidadeMas de qualquer maneira queria saber um exemplo do uso do Union porque ainda não consegui entender onde e porque usar o UNION. E tenho outra dúvida se no caso desta Procedure acima teria como eu fazer um teste para saber se foi passado algum parâmetro para ela, tipo um IF parametro ="" then Select UMelse Select DOISend ife ai resultar numa determinação de uso de parametro ou não.

Compartilhar este post


Link para o post
Compartilhar em outros sites

select id, nome, codigo, mp='mal pagador'from dsevcl00where status = 'I'unionselect id, nome, codigo, mp='Bom'from dsevcl00where status = 'A'//note que os campos nos selects são os mesmos...[pq serah que eu tenho a impressão de que este post tah no ligar errado?]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,O UNION pressupõe que ambos os SELECTS tem o mesmo numero de colunas e o mesmo tipo de dados.Não é necessário utilizar o DISTINCT porque o SQL Server utiliza-o por defeito no UNION. Caso pretendas ver todas as linhas, isto é, sem DISTINCT deves usar o UNION ALL.O UNION serve para juntar dados de duas ou mais tabelas num unico resultado. Ex:SELECT campo1, campo2FROM Tabela1UNION [ALL]SELECT campo1, campo2FROM Tabela2Quanto à SP quando a declaras é que especificas se recebe ou não parametros, isto é se declaras uma variável como PARAMETRO tens que a passar quando fazes o EXEC da SP.CREATE PROC Teste ( @Numero Int )ASBEGINIF (@Numero = 0)BEGIN PRINT 'O numero é 0'ENDELSEBEGIN PRINT 'O numero é ' + Convert(Char(15), @Numero)ENDReturn 0END1 abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

realmente...bem mais explicado..rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.