Em 22 de maio de 2014 11:55, Pedro B. Alves <pedroalve...@gmail.com>escreveu:

>
>
>
> 2014-05-21 16:27 GMT-03:00 Pedro B. Alves <pedroalve...@gmail.com>:
>
>
>>> CREATE OR REPLACE FUNCTION pedidos_mes(dt_ini date, dt_fim date)
>>> RETURNS TABLE(month integer, year integer, count integer)
>>> LANGUAGE SQL
>>> AS $$
>>> SELECT mes, ano, sum(count)
>>>   FROM (
>>>      SELECT EXTRACT(MONTH FROM datapedido) AS mes, EXTRACT(YEAR FROM
>>> datapedido) AS ano, COUNT(id) AS count
>>>       FROM pedidos
>>>       WHERE datapedido BETWEEN dt_ini AND dt_fim
>>>       GROUP BY ano, mes
>>>      UNION ALL
>>>     SELECT EXTRACT(MONTH FROM dt), EXTRACT(YEAR FROM dt), 0
>>>      FROM generate_series(date_trunc('month', dt_ini),
>>> date_trunc('month', dt_fim), interval '1 month');
>>>   ) t
>>>  ORDER BY ano, mes
>>>  GROUP BY ano, mes
>>> $$;
>>>
>>> Dessa forma você pega tudo disponível na tabela e usa o generate_series
>>> para gerar as datas (nesse caso primeiro dia de cada mês) que não estão lá.
>>>
>>>
>> Acredito ser isso. Vou testar aqui.
>>
>
> a função está me retornando um RECORD
>
> "(1,2014,0)"
> "(2,2014,0)"
> "(3,2014,0)"
> "(4,2014,3)"
> "(5,2014,0)"
>
> Sabes como resolver isso?
>
>
serial algo assim:

select mes, ano, count from pedidos_mes('2014-01-01', '2014-05-01') t
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a