-
Conteúdo Similar
-
Por Felipe Guedes Coutinho
Galera, venho contribuindo com diversas dúvidas, mas hoje quem está com uma dúvida sou eu.
Cenário - Gerar Dados para Relatório de Faturamento.
Objetivo - Obter os valores totais das tabelas de Compra, Venda e Despesa agrupados por mês através de SUM dentro do "periodo" passado pela tela de consulta do relatório.
Problema - Não existe um relacionamento entre as tabelas e eu preciso obter os resultados por 1 (UM) único select pois a cada registro lido com os valores totalizados e agrupados por mês eu movimento para um array onde o resultado do array é movimentado para um Chart do Google que gera um gráfico.
Insumos:
Tabela compra
RESULTADO SEPARADO DA TABELA COMPRA
SELECT sum(vlr_pago),
CASE extract(MONTH from dt_registro_compra)
WHEN 1 THEN 'Janeiro'
WHEN 2 THEN 'Fevereiro'
WHEN 3 THEN 'Março'
WHEN 4 THEN 'Abril'
WHEN 5 THEN 'Maio'
WHEN 6 THEN 'Junho'
WHEN 7 THEN 'Julho'
WHEN 8 THEN 'Agosto'
WHEN 9 THEN 'Setembro'
WHEN 10 THEN 'Outubro'
WHEN 11 THEN 'Novembro'
WHEN 12 THEN 'Dezembro'
END AS mes
FROM db_pescado_gelo.sqltb_compra
WHERE dt_registro_compra between '2019-01-01' and '2019-12-31'
group by mes
order by dt_registro_compra asc
RESULTADO:
Tabela Venda
RESULTADO SEPARADO DA TABELA VENDA
SELECT sum(vlr_vale),
CASE extract(MONTH from dt_registro_venda)
WHEN 1 THEN 'Janeiro'
WHEN 2 THEN 'Fevereiro'
WHEN 3 THEN 'Março'
WHEN 4 THEN 'Abril'
WHEN 5 THEN 'Maio'
WHEN 6 THEN 'Junho'
WHEN 7 THEN 'Julho'
WHEN 8 THEN 'Agosto'
WHEN 9 THEN 'Setembro'
WHEN 10 THEN 'Outubro'
WHEN 11 THEN 'Novembro'
WHEN 12 THEN 'Dezembro'
END AS mes
FROM db_pescado_gelo.sqltb_venda
WHERE dt_registro_venda between '2019-01-01' and '2019-12-31'
group by mes
order by dt_registro_venda asc
RESULTADO:
Tabela Despesa
Sei que devo colocar dt_pagamento is not null
RESULTADO SEPARADO DA TABELA DESPESA
SELECT sum(vlr_pago),
CASE extract(MONTH from dt_pagamento)
WHEN 1 THEN 'Janeiro'
WHEN 2 THEN 'Fevereiro'
WHEN 3 THEN 'Março'
WHEN 4 THEN 'Abril'
WHEN 5 THEN 'Maio'
WHEN 6 THEN 'Junho'
WHEN 7 THEN 'Julho'
WHEN 8 THEN 'Agosto'
WHEN 9 THEN 'Setembro'
WHEN 10 THEN 'Outubro'
WHEN 11 THEN 'Novembro'
WHEN 12 THEN 'Dezembro'
END AS mes
FROM db_pescado_gelo.sqltb_despesa
WHERE dt_pagamento between '2019-01-01' and '2019-12-31'
AND dt_pagamento is not null
group by mes
order by dt_pagamento asc
RESULTADO:
O resultado que eu gostaria é algo parecido com isso:
TABELA DE VENDA TABELA DE COMPRA TABELA DE DESPESA - - R$ 31.272,55 Julho - - Agosto R$ 3.796,53 R$ 20.687,20 Agosto R$ 3.796,53 Agosto
Esse resultado eu "preciso" que seja através do retorno do um único SELECT, se alguém puder me ajudar, ficarei muito agradecido.
Se puderem dar uma forã agradeço @Motta ; @Omar~ ; @Maujor ; @gabrielms
Att.
Felipe Coutinho
-
Por ronimarcos.silva
Olá pessoal, preciso de uma ajuda de vocês. Não tenho muita experiência em SQL, creio que para vocês será fácil. Estou usando o banco de dados Oracle 12C.
Supondo que tenho em meu banco 3 colunas, uma de conta de Débito, onde nesta coluna vai o código da conta de débito, uma de conta de Crédito, onde nesta coluna vai o código da conta de Crédito e uma de valor, que é informado o valor de cada lançamento a débito ou a crédito.
Quando o lançamento for a débito, o valor da conta de crédito é igual a Zero (0) e inverso quando o lançamento for a débito, ou seja, se uma conta está preenchida é porque a outra não tem lançamento. Até aí tudo bém, posso totalizar o valor por cada conta de débito ou de crédito. Mas como faço se eu querer saber o total da conta de débito e o total da conta de crédito?
Veja abaixo um exemplo:
Select E640LCT.CtaDeb, E640LCT.CtaCre, sum(E210MVP.VLRMOV) as total from E210Mvp, E644Les, E640Lct where E644Les.CodEmp = E640Lct.CodEmp and E644Les.NumLct = E640Lct.NumLct and E644Les.CodEmp = E210Mvp.CodEmp and E644Les.CodPro = E210Mvp.CodPro and E644Les.CodDer = E210Mvp.CodDer and E644Les.CodDep = E210Mvp.CodDep and E644Les.DatMov = E210Mvp.DatMov and E644Les.SeqMov = E210Mvp.SeqMov and E210Mvp.CodEmp = 100 and E210Mvp.CodFil = 3 and E640LCT.OriLct = 'EST' and E640LCT.DatLct between '01/07/2019' and '31/07/2019' group by E640LCT.CtaDeb, E640LCT.CtaCre
-
Por Ygor Guedes
Boa tarde meu pessoal. Preciso da ajuda de vocês em uma consulta baseada em Inner Join + Group By. Irei deixar as tabelas e a consulta que eu tenho, para melhor visualização:
Consulta:
SELECT tab_garagens.onibus_ponto, tab_garagens.onibus_prefixo, data FROM pontos INNER JOIN tab_garagens ON pontos.onibus_ponto = tab_garagens.onibus_ponto Tabela pontos:
| onibus_ponto | data |
| 10 | 2019-06-03 12:00:00 |
| 10 | 2019-06-03 12:10:00 |
| 44 | 2019-06-03 12:00:00 |
Tabela tab_garagens:
| onibus_ponto | onibus_prefixo |
| 10 | DE700 |
| 44 | GL030 |
A minha consulta está trazendo a informação mais antiga da data; o que eu preciso é tipo um ORDER BY com data mais recente, onde eu pego a data mais atual do registro agrupado na coluna 'onibus_ponto'.
Eu gostaria que saísse assim:
| onibus_ponto | onibus_prefixo | data |
| 10 | DE700 | 2019-06-03 12:10:00 |
| 44 | GL030 | 2019-06-03 12:00:00 |
Se puderem me ajudar, fico agradecido
-
Por brunoogm
Pessoal tenho uma tabela no php cujo resultado do select vindo do bd vem no seguinte formato:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
26 46 15/05/2019 13:57:25 Dinheiro Pendente Bacon Cheddar 1 60.00
26 46 15/05/2019 13:57:25 Dinheiro Pendente Chicken Club Sandwich 1 45.00
26 46 15/05/2019 13:57:25 Dinheiro Pendente Philly Cheese Steak 1 50.00
26 46 15/05/2019 13:57:25 Dinheiro Pendente Smoke House 1 55.00
26 46 15/05/2019 13:57:25 Dinheiro Pendente Stream Miller 1 35.00
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
E eu gostaria de fazer um select para que nao repita os dados iguais e que a tabela viesse assim:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Bacon Cheddar 1 60.00
Chicken Club Sandwich 1 45.00
26 46 15/05/2019 13:57:25 Dinheiro Pendente Philly Cheese Steak 1 50.00
Smoke House 1 55.00
Stream Miller 1 35.00
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Alguem pode me ajudar, qual seria a melhor forma de fazer ?
Essa tabela é gerada com um while no php entao se alguem saber uma outra maneira de montar isso aceito dicas.
php:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
echo "<tr role='row' class='odd'>";
echo "<td class='sorting_1'>" .$resultado['CodigoComanda']. "</td>";
echo "<td>" .$resultado['Nome']."</td>";
echo "<td>" .$resultado['Quantidade']."</td>";
echo "<td>" .$resultado['Preco']."</td>";
echo "<td>" .$resultado['Metodos']."</td>";
echo "<td>" .$resultado['DataPedido']."</td>";
echo "<td>" .$resultado['Situacao']."</td>";
echo "</tr>";
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
vlw pessoal
-
Por brunoogm
Pessoal tenho uma tabela no php cujo resultado do select vindo do bd vem no seguinte formato:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
26 46 15/05/2019 13:57:25 Dinheiro Pendente Bacon Cheddar 160.00
26 46 15/05/2019 13:57:25 Dinheiro Pendente Chicken Club Sandwich 145.00
26 46 15/05/2019 13:57:25 Dinheiro Pendente Philly Cheese Steak 150.00
26 46 15/05/2019 13:57:25 Dinheiro Pendente Smoke House 155.00
26 46 15/05/2019 13:57:25 Dinheiro Pendente Stream Miller 135.00
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
E eu gostaria de fazer um select para que nao repita os dados iguais e que a tabela viesse assim:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
46 15/05/2019 13:57:25 Dinheiro Pendente Bacon Cheddar 160.00
Chicken Club Sandwich 145.00
Philly Cheese Steak 150.00
Smoke House 155.00
26 46 15/05/2019 13:57:25 Dinheiro Pendente Stream Miller 135.00
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-