select com mais dois select
Bom dia programadores,
estou tentando aplicar um select dentro de outro select
preciso saber o que o maquinário teve de lucro e despesa no periodo para trazer em uma só
estou aplicando assim, mas obtenho o erro de não ter a mesma quantidade de colunas e variaveis.
select c.cdveiculo, v.descricao,
(select sum(c.valor_pago) Valor_Pago_Credito, sum(c.valor - c.valor_pago) Devido_Credito, sum(c.valor) Total_Credito from caixa c where c.tipo = ''C''),
(select sum(c.valor_pago) Valor_Pago_Debito, sum(c.valor - c.valor_pago) Devido_Debito, sum(c.valor) Total_Debito from caixa c where c.tipo = ''D'')
from caixa c left join veiculo v on (c.cdveiculo=v.cdveiculo)
group by 1, 2
estou tentando aplicar um select dentro de outro select
preciso saber o que o maquinário teve de lucro e despesa no periodo para trazer em uma só
estou aplicando assim, mas obtenho o erro de não ter a mesma quantidade de colunas e variaveis.
select c.cdveiculo, v.descricao,
(select sum(c.valor_pago) Valor_Pago_Credito, sum(c.valor - c.valor_pago) Devido_Credito, sum(c.valor) Total_Credito from caixa c where c.tipo = ''C''),
(select sum(c.valor_pago) Valor_Pago_Debito, sum(c.valor - c.valor_pago) Devido_Debito, sum(c.valor) Total_Debito from caixa c where c.tipo = ''D'')
from caixa c left join veiculo v on (c.cdveiculo=v.cdveiculo)
group by 1, 2
Marcio
Curtidas 0
Melhor post
Pedro Alonso
25/10/2019
Bom dia programadores,
estou tentando aplicar um select dentro de outro select
preciso saber o que o maquinário teve de lucro e despesa no periodo para trazer em uma só
estou aplicando assim, mas obtenho o erro de não ter a mesma quantidade de colunas e variaveis.
select c.cdveiculo, v.descricao,
(select sum(c.valor_pago) Valor_Pago_Credito, sum(c.valor - c.valor_pago) Devido_Credito, sum(c.valor) Total_Credito from caixa c where c.tipo = ''C''),
(select sum(c.valor_pago) Valor_Pago_Debito, sum(c.valor - c.valor_pago) Devido_Debito, sum(c.valor) Total_Debito from caixa c where c.tipo = ''D'')
from caixa c left join veiculo v on (c.cdveiculo=v.cdveiculo)
group by 1, 2
estou tentando aplicar um select dentro de outro select
preciso saber o que o maquinário teve de lucro e despesa no periodo para trazer em uma só
estou aplicando assim, mas obtenho o erro de não ter a mesma quantidade de colunas e variaveis.
select c.cdveiculo, v.descricao,
(select sum(c.valor_pago) Valor_Pago_Credito, sum(c.valor - c.valor_pago) Devido_Credito, sum(c.valor) Total_Credito from caixa c where c.tipo = ''C''),
(select sum(c.valor_pago) Valor_Pago_Debito, sum(c.valor - c.valor_pago) Devido_Debito, sum(c.valor) Total_Debito from caixa c where c.tipo = ''D'')
from caixa c left join veiculo v on (c.cdveiculo=v.cdveiculo)
group by 1, 2
Como as suas subquery estão presentes nos parametros, elas devem ser select de apenas um valor! No seu caso acredito que seja desnecessário utilizar eles ja que pode fazer mais ou menos da seguinte forma:
select c.cdveiculo, v.descricao, sum(c.valor_pago) Valor_Pago_Credito, sum(c.valor - c.valor_pago) Devido_Credito, sum(c.valor) Total_Credito,
from caixa c left join veiculo v on (c.cdveiculo=v.cdveiculo)
where c.tipo = "C" OR c.tipo = "D"
group by 1, 2
Acredito que seu group by deve ser feito sobre c.cdveiculo...
GOSTEI 1
Mais Respostas
Marcio
25/10/2019
Pedro Alonso,
dessa forma que me deu de exemplo funciona mas gostaria de apresentar na mesma linha mas os valores separados o que é crédito e débito.
exemplo veiculo 1 credito_pago 1500, credito_devido 3500, Total_Credito 5000, Debito_pago 1500, Debito_devido 3500, Debito_Total 5000.
tentei o union
select c.cdVeiculo, v.descricao,
sum(c.valor_pago) Valor_Pago, sum(c.valor - c.valor_pago) Devido, sum(c.valor) Total
from caixa c left join veiculo v on (c.cdveiculo=v.cdveiculo)
where c.tipo = 'C'
group by 1,2
union
select c.cdVeiculo, v.descricao,
sum(c.valor_pago) Valor_Pago, sum(c.valor - c.valor_pago) Devido, sum(c.valor) Total
from caixa c left join veiculo v on (c.cdveiculo=v.cdveiculo)
where c.tipo = 'D'
group by 1,2
mas ele apresenta os Créditos em uma linha e Débitos na linha de baixo
dessa forma que me deu de exemplo funciona mas gostaria de apresentar na mesma linha mas os valores separados o que é crédito e débito.
exemplo veiculo 1 credito_pago 1500, credito_devido 3500, Total_Credito 5000, Debito_pago 1500, Debito_devido 3500, Debito_Total 5000.
tentei o union
select c.cdVeiculo, v.descricao,
sum(c.valor_pago) Valor_Pago, sum(c.valor - c.valor_pago) Devido, sum(c.valor) Total
from caixa c left join veiculo v on (c.cdveiculo=v.cdveiculo)
where c.tipo = 'C'
group by 1,2
union
select c.cdVeiculo, v.descricao,
sum(c.valor_pago) Valor_Pago, sum(c.valor - c.valor_pago) Devido, sum(c.valor) Total
from caixa c left join veiculo v on (c.cdveiculo=v.cdveiculo)
where c.tipo = 'D'
group by 1,2
mas ele apresenta os Créditos em uma linha e Débitos na linha de baixo
GOSTEI 0
Emerson Nascimento
25/10/2019
faça algo assim:
select c.cdVeiculo, v.descricao, sum(case when c.tipo = 'C' then c.valor_pago else 0 end) Valor_C_Pago, sum(case when c.tipo = 'C' then c.valor - c.valor_pago else 0 end) Valor_C_Devido, sum(case when c.tipo = 'C' then c.valor else 0 end) Valor_C_Total, sum(case when c.tipo = 'D' then c.valor_pago else 0 end) Valor_D_Pago, sum(case when c.tipo = 'D' then c.valor - c.valor_pago else 0 end) Valor_D_Devido, sum(case when c.tipo = 'D' then c.valor else 0 end) Valor_D_Total from caixa c left join veiculo v on (v.cdveiculo = c.cdveiculo) group by c.cdVeiculo, v.descricao
GOSTEI 1
Marcio
25/10/2019
Top, o que eu precisava,
mto obrigado Emerson nascimento.
mto obrigado Emerson nascimento.
GOSTEI 0