Fórum selecionar dados por mês #61097
17/03/2010
0
O insumo 30 gastou 1000 kg no mes 01 e 1500 no mes 10
então fiz da seguinte forma:
SQL = "SELECT DISTINCT A.COD_INSUMO," & _
"(Select Sum(QUANTIDADE)as QTO From RECEITUARIO_AGRONOMICO_INSUMO Where RECEITUARIO_AGRONOMICO_INSUMO.COD_INSUMO=B.ID_INSUMO AND C.DATAP>='" & txtAno.Text & "-01-01' AND C.DATAP<='" & txtAno.Text & "-01-31' ) as JANEIRO," & _
"(Select Sum(QUANTIDADE)as QT1 From RECEITUARIO_AGRONOMICO_INSUMO Where RECEITUARIO_AGRONOMICO_INSUMO.COD_INSUMO=B.ID_INSUMO AND C.DATAP>='" & txtAno.Text & "-02-01' AND C.DATAP<='" & txtAno.Text & "-02-28' ) as FEVEREIRO," & _
"(Select Sum(QUANTIDADE)as QT2 From RECEITUARIO_AGRONOMICO_INSUMO Where RECEITUARIO_AGRONOMICO_INSUMO.COD_INSUMO=B.ID_INSUMO AND C.DATAP>='" & txtAno.Text & "-03-01' AND C.DATAP<='" & txtAno.Text & "-03-31' ) as MARCO," & _
"(Select Sum(QUANTIDADE)as QT3 From RECEITUARIO_AGRONOMICO_INSUMO Where RECEITUARIO_AGRONOMICO_INSUMO.COD_INSUMO=B.ID_INSUMO AND C.DATAP>='" & txtAno.Text & "-04-01' AND C.DATAP<='" & txtAno.Text & "-04-30' ) as ABRIL," & _
"(Select Sum(QUANTIDADE)as QT4 From RECEITUARIO_AGRONOMICO_INSUMO Where RECEITUARIO_AGRONOMICO_INSUMO.COD_INSUMO=B.ID_INSUMO AND C.DATAP>='" & txtAno.Text & "-05-01' AND C.DATAP<='" & txtAno.Text & "-05-31' ) as MAIO," & _
"(Select Sum(QUANTIDADE)as QT5 From RECEITUARIO_AGRONOMICO_INSUMO Where RECEITUARIO_AGRONOMICO_INSUMO.COD_INSUMO=B.ID_INSUMO AND C.DATAP>='" & txtAno.Text & "-06-01' AND C.DATAP<='" & txtAno.Text & "-06-30' ) as JUNHO," & _
"(Select Sum(QUANTIDADE)as QT6 From RECEITUARIO_AGRONOMICO_INSUMO Where RECEITUARIO_AGRONOMICO_INSUMO.COD_INSUMO=B.ID_INSUMO AND C.DATAP>='" & txtAno.Text & "-07-01' AND C.DATAP<='" & txtAno.Text & "-07-31' ) as JULHO," & _
"(Select Sum(QUANTIDADE)as QT7 From RECEITUARIO_AGRONOMICO_INSUMO Where RECEITUARIO_AGRONOMICO_INSUMO.COD_INSUMO=B.ID_INSUMO AND C.DATAP>='" & txtAno.Text & "-08-01' AND C.DATAP<='" & txtAno.Text & "-08-31' ) as AGOSTO," & _
"(Select Sum(QUANTIDADE)as QT8 From RECEITUARIO_AGRONOMICO_INSUMO Where RECEITUARIO_AGRONOMICO_INSUMO.COD_INSUMO=B.ID_INSUMO AND C.DATAP>='" & txtAno.Text & "-09-01' AND C.DATAP<='" & txtAno.Text & "-09-31' ) as SETEMBRO," & _
"(Select Sum(QUANTIDADE)as QT9 From RECEITUARIO_AGRONOMICO_INSUMO Where RECEITUARIO_AGRONOMICO_INSUMO.COD_INSUMO=B.ID_INSUMO AND C.DATAP>='" & txtAno.Text & "-10-01' AND C.DATAP<='" & txtAno.Text & "-10-31' ) as OUTUBRO," & _
"(Select Sum(QUANTIDADE)as QT10 From RECEITUARIO_AGRONOMICO_INSUMO Where RECEITUARIO_AGRONOMICO_INSUMO.COD_INSUMO=B.ID_INSUMO AND C.DATAP>='" & txtAno.Text & "-11-01' AND C.DATAP<='" & txtAno.Text & "-11-30' ) as NOVEMBRO," & _
"(Select Sum(QUANTIDADE)as QT11 From RECEITUARIO_AGRONOMICO_INSUMO Where RECEITUARIO_AGRONOMICO_INSUMO.COD_INSUMO=B.ID_INSUMO AND C.DATAP>='" & txtAno.Text & "-12-01' AND C.DATAP<='" & txtAno.Text & "-12-31' ) as DEZEMBRO," & _
"A.COD_INSUMO,B.ID_INSUMO,B.NOME_COMERCIAL " & _
" FROM ((RECEITUARIO_AGRONOMICO_INSUMO A LEFT JOIN CAD_INSUMO B ON B.ID_INSUMO = A.COD_INSUMO) " & _
" LEFT JOIN RECEITUARIO_AGRONOMICO C ON C.ID_RECEITUARIO_AGRONOMICO=A.COD_RECEITUARIO_AGRONOMICO)" & _
" LEFT JOIN CAD_TIPOINSUMO D ON D.ID_TIPOINSUMO=B.TIPO_INSUMO" & _
" WHERE C.COD_FAZENDA=" & Identificador_fazenda
Porem ele não esta trazendo 1000 kg em janeiro e 1500 em outubro, ele ta somando e aparecendo 2500 kg em janeiro e 2500 em outubro, como separar isto?
Paulo Henrique
Curtir tópico
+ 0Posts
17/03/2010
Emerson Nascimento
Gostei + 0
17/03/2010
Paulo Henrique
Mas eu preciso que retorno os valores de cada insumo separada por mes
Gostei + 0
17/03/2010
Sérgio Saibel
Gostei + 0
17/03/2010
Emerson Nascimento
SQL = "SELECT " & _
" A.COD_INSUMO, B.ID_INSUMO, B.NOME_COMERCIAL, " & _
" SUM(CASE WHEN COALESCE(EXTRACT(MONTH FROM C.DATAP),0) = 1 THEN A.QUANTIDADE ELSE 0 END) AS JANEIRO, " & _
" SUM(CASE WHEN COALESCE(EXTRACT(MONTH FROM C.DATAP),0) = 2 THEN A.QUANTIDADE ELSE 0 END) AS FEVEREIRO, " & _
" SUM(CASE WHEN COALESCE(EXTRACT(MONTH FROM C.DATAP),0) = 3 THEN A.QUANTIDADE ELSE 0 END) AS MARCO, " & _
" SUM(CASE WHEN COALESCE(EXTRACT(MONTH FROM C.DATAP),0) = 4 THEN A.QUANTIDADE ELSE 0 END) AS ABRIL, " & _
" SUM(CASE WHEN COALESCE(EXTRACT(MONTH FROM C.DATAP),0) = 5 THEN A.QUANTIDADE ELSE 0 END) AS MAIO, " & _
" SUM(CASE WHEN COALESCE(EXTRACT(MONTH FROM C.DATAP),0) = 6 THEN A.QUANTIDADE ELSE 0 END) AS JUNHO, " & _
" SUM(CASE WHEN COALESCE(EXTRACT(MONTH FROM C.DATAP),0) = 7 THEN A.QUANTIDADE ELSE 0 END) AS JULHO, " & _
" SUM(CASE WHEN COALESCE(EXTRACT(MONTH FROM C.DATAP),0) = 8 THEN A.QUANTIDADE ELSE 0 END) AS AGOSTO, " & _
" SUM(CASE WHEN COALESCE(EXTRACT(MONTH FROM C.DATAP),0) = 9 THEN A.QUANTIDADE ELSE 0 END) AS SETEMBRO, " & _
" SUM(CASE WHEN COALESCE(EXTRACT(MONTH FROM C.DATAP),0) = 10 THEN A.QUANTIDADE ELSE 0 END) AS OUTUBRO, " & _
" SUM(CASE WHEN COALESCE(EXTRACT(MONTH FROM C.DATAP),0) = 11 THEN A.QUANTIDADE ELSE 0 END) AS NOVEMBRO, " & _
" SUM(CASE WHEN COALESCE(EXTRACT(MONTH FROM C.DATAP),0) = 12 THEN A.QUANTIDADE ELSE 0 END) AS DEZEMBRO " & _
"FROM " & _
" RECEITUARIO_AGRONOMICO_INSUMO A " & _
"LEFT JOIN " & _
" CAD_INSUMO B ON B.ID_INSUMO = A.COD_INSUMO " & _
"INNER JOIN " & _
" RECEITUARIO_AGRONOMICO C ON C.ID_RECEITUARIO_AGRONOMICO=A.COD_RECEITUARIO_AGRONOMICO " & _
" AND EXTRACT(YEAR FROM C.DATAP) = " & txtAno.Text & _
"WHERE " & _
" C.COD_FAZENDA = " & Identificador_fazenda & _
" GROUP BY " & _
" A.COD_INSUMO, B.ID_INSUMO, B.NOME_COMERCIAL "
você usa subseletcs desnecessariamente.
elas devem ser usadas em último caso, pois oneram bastante o motor de busca do banco de dados.
Gostei + 0
17/03/2010
Paulo Henrique
Se não for abusar muito você poderia só me ajudar em um detalhe do outro topico?
Gostei + 0
18/03/2010
Emerson Nascimento
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)