Dúvida sobre [b]SELECT[/b]

Firebird

22/09/2004

Eu quero selecionar a soma de uma coluna, mas ela teria q aparecer varias vezes dependendo do tipo de hora

Ex:
Funcionario [color=blue:5e714a0c62]Hora Normal[/color:5e714a0c62] [color=green:5e714a0c62]Hora Extra[/color:5e714a0c62] [color=darkred:5e714a0c62]Hora Adicional[/color:5e714a0c62]

João da Silva [color=blue:5e714a0c62]150,00[/color:5e714a0c62] [color=green:5e714a0c62]225,35 [/color:5e714a0c62] [color=darkred:5e714a0c62]50,52[/color:5e714a0c62]

Esse select funciona somente para 1 tipo de hora. Tem como fazer para aparecer os outros tipos de hora também?

[color=red:5e714a0c62][i:5e714a0c62][b:5e714a0c62]select sum(HORTOTAL) from cadservicosccapont where idcadtiphoras = ´Hora Normal´[/b:5e714a0c62][/i:5e714a0c62][/color:5e714a0c62]


Blbacelar

Blbacelar

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

22/09/2004

Se não der pra fazer direto, tente montar uma procedure no banco de dados.


GOSTEI 0
Fsflorencio

Fsflorencio

22/09/2004

Assim retorna 3 registros:
select sum(HORTOTAL), ´N´ Tipo from cadservicosccapont where idcadtiphoras = ´Hora Normal´

union

select sum(HORTOTAL), ´E´ Tipo from cadservicosccapont where idcadtiphoras = ´Hora Extra´

union

select sum(HORTOTAL), ´A´ Tipo from cadservicosccapont where idcadtiphoras = ´Hora Adicional´

vc pode fazer + ou - assim para retornar um registro apenas:

select funcionario.codigo, funcionario.nome,
(select sum(HORTOTAL)
from cadservicosccapont
where idcadtiphoras = ´Hora Normal´ and
codigo_funcionario = funcionario.codigo) Normal,
(select sum(HORTOTAL)
from cadservicosccapont
where idcadtiphoras = ´Hora Extra´ and
codigo_funcionario = funcionario.codigo) Extra,
(select sum(HORTOTAL)
from cadservicosccapont
where idcadtiphoras = ´Hora Adicional´ and
codigo_funcionario = funcionario.codigo) Adicional
from funcionarios where codigo = 99


GOSTEI 0
Blbacelar

Blbacelar

22/09/2004

Valeu pela dica , funcionou :D


GOSTEI 0
Blbacelar

Blbacelar

22/09/2004

fsflorencio,

só mais uma coisa, tem como retornar o resultado em varias colunas,
dessa maneira q vc me passou ele retorna em linhas.


GOSTEI 0
Fsflorencio

Fsflorencio

22/09/2004

É aquela segunda opção que tinha te passado:

select funcionario.codigo, funcionario.nome,
(select sum(HORTOTAL)
from cadservicosccapont
where idcadtiphoras = ´Hora Normal´ and
codigo_funcionario = funcionario.codigo) Normal,
(select sum(HORTOTAL)
from cadservicosccapont
where idcadtiphoras = ´Hora Extra´ and
codigo_funcionario = funcionario.codigo) Extra,
(select sum(HORTOTAL)
from cadservicosccapont
where idcadtiphoras = ´Hora Adicional´ and
codigo_funcionario = funcionario.codigo) Adicional
from funcionarios where codigo = 99

Não tenho a estrutura de suas tabelas, então supunha que fosse mais ou menos o que escreví.
Se vc quiser me enviar as estruturas (tabela de funcionários e de horas) farei com prazer.


GOSTEI 0
Blbacelar

Blbacelar

22/09/2004

consegui resolver , obrigado pela dica


GOSTEI 0
POSTAR