SQL: unir 2 selects da mesma tabela

29/10/2015

0

Boa tarde Pessoal

É possível unir os dois selects abaixo em uma mesma consulta?


SELECTVENDEDOR,
SUM (VLR_N_FISC) AS MES_ANT from nfme where MONTH(DT_EMISSAO) = MONTH(GETDATE())-1 and YEAR(DT_EMISSAO) = YEAR(GETDATE()) GROUP BY VENDEDOR



SELECT VENDEDOR,
SUM (VLR_N_FISC) AS MES_ATU from nfme where MONTH(DT_EMISSAO) = MONTH(GETDATE()) and YEAR(DT_EMISSAO) = YEAR(GETDATE()) GROUP BY VENDEDOR



Obrigada!

Abçs, Ariana
Ariana Barros

Ariana Barros

Responder

Posts

29/10/2015

Jothaz

Sempre que postar código use a tag "</>" do primeiro ícone a esquerda, pois facilitar a leitura e a ajuda.

Tente assim:

SELECT VENDEDOR,SUM (VLR_N_FISC) AS MES_ANT 
from nfme 
where MONTH(DT_EMISSAO) = MONTH(GETDATE())-1 and YEAR(DT_EMISSAO) = YEAR(GETDATE()) 

UNION ALL

SELECT VENDEDOR,SUM (VLR_N_FISC) AS MES_ATU 
from nfme 
where MONTH(DT_EMISSAO) = MONTH(GETDATE()) and YEAR(DT_EMISSAO) = YEAR(GETDATE()) 
GROUP BY VENDEDOR

Responder

04/11/2015

Fernando Vicari

Boa noite Ariana

Não sei qual o banco de dados você utiliza, porém entendi sua dúvida.

No oracle eu faria utilizando a clausula DECODE que é um IF dentro do teu select.

No firebird a equivalencia ao Decode é o iif(sexo = 'M', 'Sr.', 'Sra.') e no SQLServer é o Case.

Exemplo no oracle:
SELECT VENDEDOR,
       SUM(DECODE(TO_CHAR(DT_EMISSAO, 'MM'), TO_CHAR(SYSDATE, 'MM'), VLR_N_FISC, 0) MES_ATU
       SUM(DECODE(TO_CHAR(DT_EMISSAO, 'MM'), TO_CHAR(SYSDATE, 'MM'), 0, VLR_N_FISC) MES_ANT 
  from nfme
 where DT_EMISSAO >= TRUNC((LAST_DAY(ADD_MONTHS(sysdate, -2))+1))
   AND DT_EMISSAO <= TRUNC(LAST_DAY(sysdate))


O que eu fiz foi trazer todas as vendas do mês anterior até o final do mês atual. E se o mes da data de emissao for igual ao mês atual eu somo em uma coluna senão na outra.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar