Juntar as select no Mysql

10/02/2019

15

Alguém poderia me ajudar estou tentando unir a mesma select só com a "dat" diferente para fazer um relatório

select 
	l.nome,
	m.cpfcnpj,
	sum(if(descricao='apply',ncotas,0)) - sum(if(descricao='rescue',ncotas,0)) AS anterior,
    '-' as atual
from 
	movimentacao m, 
	login l
where 
	empresa ='sec' 
and
	m.cpfcnpj=l.cpfcnpj
and
	length(m.cpfcnpj)=11
and
	dat < '2018-07-31'
group by cpfcnpj
union
select 
	l.nome,
	m.cpfcnpj,
    '-' as anterior,
	sum(if(descricao='apply',ncotas,0)) - sum(if(descricao='rescue',ncotas,0)) AS atual
from 
	movimentacao m, 
	login l
where 
	empresa ='sec' 
and
	m.cpfcnpj=l.cpfcnpj
and
	length(m.cpfcnpj)=11
and
	dat < '2018-08-31'
group by cpfcnpj

order by nome;



RESULTADO DA SELECT
Alessandra Martins 12345678900 14 -
Alessandra Martins 12345678900 - 14
Alice Castilho 12345678900 - 1052
Alice Castilho 12345678900 904 -
Andre Felipe 12345678900 10 -
Andre Felipe 12345678900 - 10
Antonio Neto 12345678900 5 -
Antonio Neto 12345678900 - 5


RESULTADO DA SELECT QUE EU GOSTARIA

Alessandra Martins 12345678900 14 14
Alice Castilho 12345678900 904 1052
Andre Felipe 12345678900 10 10
Antonio Neto 12345678900 5 5


DESDE JÁ AGRADEÇO!!
Responder

Post mais votado

12/02/2019

Faz um SELECT por fora com GROUP BY.

Usa essa query imensa sua dentro do FROM.

Mas tira esse tracinho, se não vai dar ruim. Tenta usar 0 no lugar.

Consegui ser claro?

Grande abraço
Responder

Mais Posts

10/02/2019

Jailson Santos

resultado da select no link abaixo

https://ibb.co/f2Xsr6n
Responder

12/02/2019

Luiz Santos

Para facilitar sua vida.


SELECT Q.nome
     , Q.cpfcnpj
	 , SUM(Q.anterior) AS anterior
	 , SUM(Q.atual) AS atual
FROM (
select
    l.nome,
    m.cpfcnpj,
    sum(if(descricao='apply',ncotas,0)) - sum(if(descricao='rescue',ncotas,0)) AS anterior,
    0 as atual
from
    movimentacao m, 
    login l
where
    empresa ='sec'
and
    m.cpfcnpj=l.cpfcnpj
and
    length(m.cpfcnpj)=11
and
    dat < '2018-07-31'
group by cpfcnpj
union
select
    l.nome,
    m.cpfcnpj,
    0 as anterior,
    sum(if(descricao='apply',ncotas,0)) - sum(if(descricao='rescue',ncotas,0)) AS atual
from
    movimentacao m, 
    login l
where
    empresa ='sec'
and
    m.cpfcnpj=l.cpfcnpj
and
    length(m.cpfcnpj)=11
and
    dat < '2018-08-31'
group by cpfcnpj ) AS Q

GROUP BY 
	   Q.nome
     , Q.cpfcnpj
order by 
	Q.nome;

Responder

12/02/2019

Jailson Santos

Para facilitar sua vida.


SELECT Q.nome
     , Q.cpfcnpj
	 , SUM(Q.anterior) AS anterior
	 , SUM(Q.atual) AS atual
FROM (
select
    l.nome,
    m.cpfcnpj,
    sum(if(descricao='apply',ncotas,0)) - sum(if(descricao='rescue',ncotas,0)) AS anterior,
    0 as atual
from
    movimentacao m, 
    login l
where
    empresa ='sec'
and
    m.cpfcnpj=l.cpfcnpj
and
    length(m.cpfcnpj)=11
and
    dat < '2018-07-31'
group by cpfcnpj
union
select
    l.nome,
    m.cpfcnpj,
    0 as anterior,
    sum(if(descricao='apply',ncotas,0)) - sum(if(descricao='rescue',ncotas,0)) AS atual
from
    movimentacao m, 
    login l
where
    empresa ='sec'
and
    m.cpfcnpj=l.cpfcnpj
and
    length(m.cpfcnpj)=11
and
    dat < '2018-08-31'
group by cpfcnpj ) AS Q

GROUP BY 
	   Q.nome
     , Q.cpfcnpj
order by 
	Q.nome;




Obrigado Luiz funcionou perfeitamente. Fiz de outra forma usando left join, mas obrigado mesmo assim
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira