Utilizando o Select para mostrar e totalizar os registros

Firebird

29/01/2009

Bom dia a todos...

Estou utilizando o firebird 2.0 e tenho um tabela com os seguinte campos:

id
nref
orcamentista
rev
status_orc
data_status_orc

Com estes campos gostaria de fazer um select para buscar todos os registros que tenha a data_status de hoje e que o status esteja como pendente, mas gostaria de saber tambem o total de registros com estas condições...

Alguém poderia me ajudar...

Exemplo do primeiro select:

select NREF, ORCAMENTISTA, REV, STATUS_ORC, DATA_STATUS_ORC from ORC where DATA_STATUS_ORC = current_date and STATUS_ORC = ´ENVIADO´;

Com este codigo consigo mostrar os registros, e agora como que faço para mostrar também o total de registro.

Obrigado.

Uelinton


Uelinton_reis

Uelinton_reis

Curtidas 0

Respostas

Webjoel

Webjoel

29/01/2009

Olá!

Segue abaixo a resolução:

select 

count(*) 

from ORC 

where DATA_STATUS_ORC = current_date 
and STATUS_ORC = ´ENVIADO´;



GOSTEI 0
Uelinton_reis

Uelinton_reis

29/01/2009

Olá! Segue abaixo a resolução:
select 

count(*) 

from ORC 

where DATA_STATUS_ORC = current_date 
and STATUS_ORC = ´ENVIADO´;


Valeu cara, mas aqui ele esta apenas totalizando, e eu tbem preciso que me mostre os campos ID, NREF, ORCAMENTISTA, REV, STATUS_ORC, DATA_STATUS_ORC..

Tem como...

veleu, obrigado.


GOSTEI 0
Webjoel

Webjoel

29/01/2009

Te tem...

mas dai eles vai totalizar pelo campos que vc colocar a mais:

select 

NREF, 
ORCAMENTISTA, 
REV, 
STATUS_ORC, 
DATA_STATUS_ORC,
count(*) 

from ORC 
where DATA_STATUS_ORC = current_date 
and STATUS_ORC = ´ENVIADO´

group by 1,2,3,4,5


em um select simples com o total geral não dá, a não ser que você faça uma procedure.


GOSTEI 0
Uelinton_reis

Uelinton_reis

29/01/2009

Te tem... mas dai eles vai totalizar pelo campos que vc colocar a mais:
select 

NREF, 
ORCAMENTISTA, 
REV, 
STATUS_ORC, 
DATA_STATUS_ORC,
count(*) 

from ORC 
where DATA_STATUS_ORC = current_date 
and STATUS_ORC = ´ENVIADO´

group by 1,2,3,4,5
em um select simples com o total geral não dá, a não ser que você faça uma procedure.


Bom dia amigo,

desta forma que vc me passou, não deu certo não....
vc tinha testado...

tem alguma outra forma....

obrigado.

Uelinton


GOSTEI 0
Webjoel

Webjoel

29/01/2009

pois é véio..

como eu te falei..pra você poder retornar a quantidade de registros só mesmo com uma procedure, segue abaixo um exemplo:

SET TERM ^ ;

CREATE OR ALTER PROCEDURE SP_ORCAMENTOS
returns (
    NREF integer,
    ORCAMENTISTA integer,
    REV integer,
    STATUS_ORC varchar(20),
    DATA_STATUS_ORC date,
    TOTAL_ORCAMENTOS integer)
as
begin
  total_orcamentos = 0;
  for select NREF,
             ORCAMENTISTA,
             REV,
             STATUS_ORC,
             DATA_STATUS_ORC,
             from ORC
             where DATA_STATUS_ORC = current_date
             and STATUS_ORC = ´ENVIADO´
  into :NREF, :ORCAMENTISTA, :REV, :STATUS_ORC, :DATA_STSTUS_ORC do
  begin
    total_orcamentos = :total_orcamentos + 1;
    suspend;
  end;
end
^

SET TERM ; ^


não testei, mas a logica eh essa, tipo só troca os tipos de campo ali do returns que não sei como estão na sua tabela.

lembrando que desta forma o total vai estar no ultimo registro.


GOSTEI 0
POSTAR