Firebird Função Extract

download Firebird Função Extract

of 2

Transcript of Firebird Função Extract

Firebird funo extract()algum poderia tirar uma dvida por favor. o seguinte, estou fazendo uma query onde devo buscar quantos produtos foram vendidos no perodo de dezembro/2004 at janeiro/2005. Mais preciso que mostre separadamente em cada ms, por exemplo: dezembro - 30 janeiro - 20 fevereiro - 50 e assim para cada ms do ano.

Bom, desta forma no traz o resultado que desejo select count(dataativacao), count(datacancelamento) from contrato where extract(month from dataativacao) between '01' and '12' and Extract(year from dataativacao) between '2004' and '2005' group by extract(month from dataativacao), extract(month from datacancelamento)

Algum save como resolvo isso?

veja se assim funciona: Cdigo:

select (extract(year from dataativacao) + (extract(month from dataativacao) / 100)) mes, count(dataativacao) quantidade, from contrato where (extract(year from dataativacao) + (extract(month from dataativacao) / 100)) between 2004.12 and 2005.02 group by (extract(year from dataativacao) + (extract(month from dataativacao) / 100))

poderia ser tambm group by 1 (visto que o agrupamento feito pelo 1o. campo da instruo)

Emerson, desta forma no deu certo, me trouxe apenas trs linhas e j verifiquei em todos os meses houve venda.

S me tire uma dvida pq precisamos de dividir por 100? select (extract(year from dataativacao) + (extract(month from dataativacao) / 100)) mes, count(dataativacao) quantidade from contrato where (extract(year from dataativacao) + (extract(month from dataativacao) / 100)) between 2004.12 and 2005.02 group by 1

Membro SeniorRegistrado em: Tera-Feira, 16 de Maro de 2004Mensagens: 2503Localizao: So Paulo - SP - BrasilEnviada: Qui Fev 09, 2006 8:03 am Assunto:

adriane, trouxe apenas trs linhas por conta do where. Citao:

where (extract(year from dataativacao) + (extract(month from dataativacao) / 100)) between 2004.12 and 2005.02

ou seja: 12/2004 01/2005 02/2005 a instruo est correta.

quanto a dividir por 100 (cem), para que mostre o ms no formato 2004.12, por exemplo. assim, se voc ordenar por esse campo, a ordenao ser na ordem correta.

se a sua inteno era pesquisar de 01/2004 at 12/2005, a instruo dever mudar para (note a alterao no where): Cdigo:

select (extract(year from dataativacao) + (extract(month from dataativacao) / 100)) mes, count(dataativacao) quantidade, from contrato where (extract(year from dataativacao) + (extract(month from dataativacao) / 100)) between 2004.01 and 2005.12 group by 1