GARANTIR DESCONTO

Fórum probelema com Select, InnerJoin e GroupBy no mesmo SQL #59264

17/12/2007

0

olá pessoal, tenho o seguinte SQL inicial, com select e innerjoin.

 
select hsrps_movimentacao.idmovimentacao,
hsrps_movimentacao.idsegurado,
hsrps_movimentacao.idcompetencia,
hsrps_movimentacao.dtlancamento,
hsrps_movimentacao.anoreferencia,
hsrps_movimentacao.idtipolanc,
hsrps_movimentacao.idtipofolha,
hsrps_movimentacao.idorgaoorigem,
hsrps_movimentacao.ctb_basesegurado,
hsrps_movimentacao.ctb_baseempresa,
hsrps_movimentacao.ctb_cont_nor_seg,
hsrps_movimentacao.ctb_cont_esp_seg,
hsrps_movimentacao.ctb_cont_out_seg,
hsrps_movimentacao.ctb_cont_nor_emp,
hsrps_movimentacao.ctb_cont_esp_emp,
hsrps_movimentacao.ctb_cont_out_emp,
hsrps_movimentacao.perc_nor_emp,
hsrps_movimentacao.perc_esp_emp,
hsrps_movimentacao.perc_out_emp,
hsrps_movimentacao.perc_nor_seg,
hsrps_movimentacao.perc_esp_seg,
hsrps_movimentacao.perc_out_seg,
hsrps_movimentacao.pag_fp_salbrutorec,
hsrps_movimentacao.pag_fp_descconsignado,
hsrps_movimentacao.pag_fp_saldoliqcred,
hsrps_movimentacao.pag_vlr_provinativo,
hsrps_movimentacao.pag_vlr_salariopens,
hsrps_movimentacao.pag_vlr_provdiversos,
hsrps_movimentacao.pag_vlr_salmaternidade,
hsrps_movimentacao.pag_vlr_auxdoenca,
hsrps_movimentacao.pag_vlr_abonofamilia,
hsrps_movimentacao.pag_vlr_descfundo,
hsrps_movimentacao.pag_vlr_recutilizado,
hsrps_movimentacao.pag_baseprevidenciaria,
hsrps_movimentacao.pag_percentual,
hsrps_competencias.descricaocompet,
hsrps_segurados.inscricaomunicipal,
hscad_cadmunicipal.nome,
hsrps_orgaos.nomeorgao,
hsrps_situacaofuncional.descricao
from hsrps_orgaos
   inner join hsrps_segurados on (hsrps_orgaos.idorgao = hsrps_segurados.idorgao)
   inner join hsrps_situacaofuncional on (hsrps_segurados.idsituacaofunc = hsrps_situacaofuncional.idsituacao)
   inner join hsrps_movimentacao on (hsrps_segurados.idsegurado = hsrps_movimentacao.idsegurado)
   inner join hsrps_competencias on (hsrps_movimentacao.idcompetencia = hsrps_competencias.idcompetencia)
   inner join hscad_cadmunicipal on (hsrps_segurados.inscricaomunicipal = hscad_cadmunicipal.inscricaomunicipal)


até aí funciona legal.. depois precisarei colocar um where, blza...
where (hsrps_movimentacao.idsegurado = :pIDSegurado) and (hsrps_movimentacao.anoreferencia = :pAnoRef)


Setei os tipos de parametro, e fui adicionar GroupBy e deu erro, gostaria de agrupar por IDSegurado e IDcompetencia sendo que também tem que possuir alguns campos de total, que depois eu faço. Minha pergunta é como poderia adicionar esse GroupBy dentro da minha TSQLQuery ?

Obrigado qm puder ajudar.


Gtts

Gtts

Responder

Posts

17/12/2007

Powerlog Tecnologia

Eu (na minha modesta opinião), em primeiro lugar, simplificaria a select assim:

select m.idmovimentacao, 
m.idsegurado, 
m.idcompetencia, 
m.dtlancamento, 
m.anoreferencia, 
m.idtipolanc, 
m.idtipofolha, 
m.idorgaoorigem, 
m.ctb_basesegurado, 
m.ctb_baseempresa, 
m.ctb_cont_nor_seg, 
m.ctb_cont_esp_seg, 
m.ctb_cont_out_seg, 
m.ctb_cont_nor_emp, 
m.ctb_cont_esp_emp, 
m.ctb_cont_out_emp, 
m.perc_nor_emp, 
m.perc_esp_emp, 
m.perc_out_emp, 
m.perc_nor_seg, 
m.perc_esp_seg, 
m.perc_out_seg, 
m.pag_fp_salbrutorec, 
m.pag_fp_descconsignado, 
m.pag_fp_saldoliqcred, 
m.pag_vlr_provinativo, 
m.pag_vlr_salariopens, 
m.pag_vlr_provdiversos, 
m.pag_vlr_salmaternidade, 
m.pag_vlr_auxdoenca, 
m.pag_vlr_abonofamilia, 
m.pag_vlr_descfundo, 
m.pag_vlr_recutilizado, 
m.pag_baseprevidenciaria, 
m.pag_percentual, 
c.descricaocompet, 
s.inscricaomunicipal, 
u.nome, 
o.nomeorgao, 
f.descricao 
from hsrps_movimentacao m
inner join hsrps_segurados s on m.idsegurado = s.idsegurado 
inner join hsrps_orgaos o on s.idorgao = o.idorgao 
inner join hsrps_situacaofuncional f on s.idsituacaofunc = f.idsituacao 
inner join hsrps_competencias c on m.idcompetencia = c.idcompetencia 
inner join hscad_cadmunicipal u on s.inscricaomunicipal = u.inscricaomunicipal 
where m.idsegurado = :pIDSegurado and m.anoreferencia = :pAnoRef 


Também foi trocada a ordem no ´from´, pois se vc começa com o movimento, o primeiro from é interessante que começe com ele (tunning de BD)

Só que para ter GROUP BY você precisaria ter sum, count de algum campo e o group precisa ser de TODOS OS OUTROS CAMPOS que constam na select.

Veja se te ajuda em algo :wink:


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar