Array
(
)

SQL: unir 2 selects da mesma tabela

Ariana Barros
   - 29 out 2015

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

Jothaz
   - 29 out 2015

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

Tente assim:

#Código

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

Fernando Vicari
   - 04 nov 2015

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:
#Código

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.