SELECIONAR DADOS SOMANDO A QUANTIDADE POR MES

PAULOHSV 17/03/2010 10:38:56
#337157
Preciso selecionar os dados somando mes a mes, por exemplo:

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?
PAULOHSV 17/03/2010 15:43:44
#337188
Solução encontrada.

Citação:

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 [Ô]

Tópico encerrado , respostas não são mais permitidas