Consulta SQL complicada (Count) ????.
Pessoal,
Bom dia a todos!
Tenho uma tabela de funcionários onde possui os seguintes campos:
Nome,
CPF,
Data de Nascimento,
Data de Entrada,
Data de Saída,
Suspenso
Preciso fazer uma consulta onde possa contar:
1- Quantos funcionários Saíram (Através do campo Data de Saída);
2- Quantos funcionários Entraram (Através do campo Data de Entrada);
3- Quantos Funcionários estão Suspensos (Através do campo Suspenso)
Há condições de obter este resultados em apenas uma consulta? como posso fazer isso?
No interbase aceita a condição ´IF´ ou ´CASE´?
Caso alguém possa ajudar ficarei grato.
Agradeço desde já.
Obs: Utilizo o Interbase 6.0 com o Delphi 7.0;
Bom dia a todos!
Tenho uma tabela de funcionários onde possui os seguintes campos:
Nome,
CPF,
Data de Nascimento,
Data de Entrada,
Data de Saída,
Suspenso
Preciso fazer uma consulta onde possa contar:
1- Quantos funcionários Saíram (Através do campo Data de Saída);
2- Quantos funcionários Entraram (Através do campo Data de Entrada);
3- Quantos Funcionários estão Suspensos (Através do campo Suspenso)
Há condições de obter este resultados em apenas uma consulta? como posso fazer isso?
No interbase aceita a condição ´IF´ ou ´CASE´?
Caso alguém possa ajudar ficarei grato.
Agradeço desde já.
Obs: Utilizo o Interbase 6.0 com o Delphi 7.0;
Mmbarros
Curtidas 0
Respostas
G1b4
02/08/2004
Caro MMBarros,
Usa um dataset...
1- Quantos funcionários Saíram (Através do campo Data de Saída);
2- Quantos funcionários Entraram (Através do campo Data de Entrada);
3- Quantos Funcionários estão Suspensos (Através do campo Suspenso)
Espero te-lo ajudado :D !!!
Usa um dataset...
1- Quantos funcionários Saíram (Através do campo Data de Saída);
2- Quantos funcionários Entraram (Através do campo Data de Entrada);
DataSet.Close; DataSet.SQL.Text:=´SELECT COUNT(CPF) FROM FUNCIONARIOS WHERE DATA_SAIDA BETWEEN :Data1 AND :Data2´; DataSet.ParamByName(´Data1´).AsDate:=StrToDate(Edit1.Text); DataSet.ParamByName(´Data2´).AsDate:=StrToDate(Edit2.Text); DataSet.Open;
3- Quantos Funcionários estão Suspensos (Através do campo Suspenso)
DataSet.Close; DataSet.SQL.Text:=´SELECT COUNT(CPF) FROM FUNCIONARIOS WHERE SUSPENSO =´+QuotedStr(´S´); DataSet.Open;
Espero te-lo ajudado :D !!!
GOSTEI 0
Paulo_amorim
02/08/2004
Olá
Pode-se obter essa informacao atraves de UNION
Poderia fazer assim (supondo q a quantidade eh na data prestabelecida)
O campo ´tipo´ mostra a que tipo de count o dado pertence
Espero que ajdue
Até+
Pode-se obter essa informacao atraves de UNION
Poderia fazer assim (supondo q a quantidade eh na data prestabelecida)
SELECT ´Ent´ tipo, COUNT(*) FROM funcionarios WHERE data_entrada BETWEEN :p1 AND :p2 UNION SELECT ´Sai´, COUNT(*) FROM funcionarios WHERE data_saida BETWEEN :p1 AND :p2 UNION SELECT ´Sus´, COUNT(*) FROM funcionarios WHERE suspenso = ´S´
O campo ´tipo´ mostra a que tipo de count o dado pertence
Espero que ajdue
Até+
GOSTEI 0
Rômulo Barros
02/08/2004
Select Nome,Cpf,(Select Count(Suspenso) From Funcionarios Where Suspenso not null),(Select Count(Data_De_Saida) From Funcionarios Where Data_De_Saida not null)From Funcionarios
:o :o :o
GOSTEI 0
Paulo_amorim
02/08/2004
[quote:7070fcc3df=´Undeclared Identifier´]
:o :o :o[/quote:7070fcc3df]
Olá
Assim ele não irá dar erro de Group?? :idea:
Select Nome,Cpf,(Select Count(Suspenso) From Funcionarios Where Suspenso not null),(Select Count(Data_De_Saida) From Funcionarios Where Data_De_Saida not null)From Funcionarios
:o :o :o[/quote:7070fcc3df]
Olá
Assim ele não irá dar erro de Group?? :idea:
GOSTEI 0
Rômulo Barros
02/08/2004
[quote:647f545484=´Undeclared Identifier´]
:o :o :o
Select Nome,Cpf,(Select Count(Suspenso) From Funcionarios Where Suspenso not null),(Select Count(Data_De_Saida) From Funcionarios Where Data_De_Saida not null)From Funcionarios
Olá
Assim ele não irá dar erro de Group?? :idea:[/quote:647f545484]
Não :wink:
GOSTEI 0