Trazer data (mes/ano) no interbase

Firebird

06/07/2005

dai galera blz?!?! seguinte.. to com um projeto q tem uma consulta q pega a data e o ano e me conta quantas pessoas tem naquele periodo.. so q tem um problema.. como to programando pra 3 bancos diferentes (Oracle, Sql Server e interbase) tenho q te um select pra cada um.. so q o problema todo ta no interbase ñ usar um COUNT se alguem puder ajudar ai! valeu!!

segue os 3 codigos q eu to usando..

Oracle:
select count(TO_CHAR(contato.dtcontato, ´YYYY/MM´)) Quantidade, TO_CHAR(contato.dtcontato, ´YYYY/MM´) Data
from contato
group by TO_CHAR(contato.dtcontato, ´YYYY/MM´)


Sql Server:
select Count(cast(DATEPART(YEAR, DTCONTATO) as varchar)+ ´/´+ cast(DATEPART(MONTH, DTCONTATO) as varchar)) AS Quantidade, cast(DATEPART(YEAR, DTCONTATO)as varchar)+ ´/´+ cast(DATEPART(MONTH, DTCONTATO) as varchar) as Data
from CONTATO
group by cast(DATEPART(YEAR, DTCONTATO) as varchar)+ ´/´+ cast(DATEPART(MONTH, DTCONTATO) as varchar)
order by 2


e o que ta dando erro, interbase:
select distinct EXTRACT(year from dtcontato) || ´\´ || EXTRACT(month from dtcontato) DATA, 
(select COUNT(dtcontato) from contato) Quantidade
from contato
group by dtcontato


o problema é que tem q ter esse count, pq depois ainda vem um outro select q vai trabalhar em cima desses resultados... afirmo novamente, em Oracle e SQL Server, ta funcionando perfeito... se alguem puder me ajudar! agraço...

tipo pra ser mais claro: tenho no mes(07/2005) 4 contatos e no mes(08/2005) 1 contato esse select ali ta me trazendo assim
07/2005 - 5
08/2005 - 5
teria q tar:
07/2005 - 4
08/2005 - 1

se alguem puder me ajudar agradeço MT!!! valeu galera!!!

[color=green:4755f7fca5]Título editado por gandalf.nho. Favor não usar termos apelativos[/color:4755f7fca5]


Bastard2003

Bastard2003

Curtidas 0

Respostas

Tommahawk

Tommahawk

06/07/2005

experimente dar o count em qualquer campo da tabela, com a data no formato passado e faça o group by na data.
Assim:

select count(QualquerCampo) Quantidade,
EXTRACT(year from dtcontato) || ´\´ || EXTRACT(month from dtcontato) DATA, 
from contato 
group by EXTRACT(year from dtcontato) || ´\´ || EXTRACT(month from dtcontato) 


O mesmo raciocínio se aplica aos outros bancos...


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/07/2005

é isso mesmo. não precisa esse trabalho todo no count.

Oracle:
select
  TO_CHAR(dtcontato, ´MM/YYYY´) Data,
  count(dtcontato) Quantidade
from
  contato 
group by 
  TO_CHAR(dtcontato, ´MM/YYYY´) 


Sql Server:
select
  substring(convert(char(10),dtcontato,103),4,7) Data,
  count(dtcontato) Quantidade
from
  contato
group by
  substring(convert(char(10),dtcontato,103),4,7)


Interbase:
select
  distinct ( extract(month from c1.dtcontato) || ´/´ || extract(year from c1.dtcontato) ) Data,
  (select count(c2.dtcontato)
   from contato c2
   where extract(month from c2.dtcontato) || extract(year from c2.dtcontato)=
         extract(month from c1.dtcontato) || extract(year from c1.dtcontato) ) Quantidade
from contato c1


Firebird/Interbase:
select
  extract(month from dtcontato) || ´/´ || extract(year from dtcontato) Data,
  count(dtcontato) Quantidade
from
  contato
group by 1



GOSTEI 0
POSTAR