Performance SQL
17/05/2010
0
Galera,
Alguem pode me dar uma ajuda com este comando SQL?
Acredito que possa ser melhorado:
SELECT F.CodFunc, B.Data, U.CodUnidade, U.Descricao as DescPredio, F.Emp, F.Nome, H.*, S.*, DtFeriado = case when Fe.DtFeriado is not null then 'X' end, B.HrIni1, B.HrFim1, B.HrIni2, B.HrFim2, B.Abono, IsNull(CONVERT ( CHAR(5) , HRINI1 , 8 ), '__:__') AS HRINIFORMAT, IsNull(CONVERT ( CHAR(5) , HRFIM1 , 8 ), '__:__') AS HRFIMFORMAT, IsNull(CONVERT ( CHAR(5) , HRINI2 , 8 ), '__:__') AS HRINI2FORMAT, IsNull(CONVERT ( CHAR(5) , HRFIM2 , 8 ), '__:__') AS HRFIM2FORMAT, DtFeriado, LTrim(RTrim(F.NumCtps)) + '.'+ LTrim(RTrim(F.SerCTPS)) +'-' + LTrim(RTrim(F.UFCTPS)) As CTPS , Adm = '', HrsTrab = (SELECT SUM(DATEDIFF( HH, HRINI, HRFIM )) FROM HORARIOS WHERE CODFUNC = B.CodFunc ) - (( Select Count(*) From Horarios Where CodFunc = B.CodFunc ) * ( Select IsNull(MinAlmoco,0) From Func Where CodFunc = B.CodFunc ) / 60), C.NomeCargo, F.MinAlmoco, AbreviadoFormat = S.Abreviado + '.', Cast( LTrim(RTrim(F.MinAlmoco)) as Char(2) ) + ' min.' as MinFormat, IsNull( Convert( Char(5) , H.HrIni , 8 ), '' ) As HrEntrada, IsNull( Convert( Char(5) , H.HrFim , 8 ), '' ) As HrSaida, Case When H.CodDia is null OR Fe.DtFeriado is not null then 'X' End as DiasNTrabFROM BATIDAS B INNER JOIN FUNC F ON F.CODFUNC = B.CODFUNCInner Join Unidade U On U.CodUnidade = F.CodUnidadeLeft Join Feriados Fe On Fe.DtFeriado = B.DataInner Join Cargo C On C.CodCargo = F.CodCargoLeft Join Horarios H On H.CodDia = DatePart( Dw , Data) And H.CodFunc = F.CodFuncLeft Join Semana S On S.CodDia = DatePart( Dw , Data)WHERE DATA BETWEEN '2010-05-17' AND '2010-05-17'And F.Tipo = 'F'Order By F.CodFunc , Data
Onde
Func: Tabela de Funcionarios do SistemaHorarios: Tabela dos horarios trabalhado pelo funcionario. Ex.: Quinta-Feira: 08:00 18:00 e assim por dianteBatidas: Tabela do registro de batidas do funcionario... Dia e HorariosFeriados: Tabela contendo os feriadosSemana: Tabela auxiliar informando o dia da semana e sua abreviacao
Obrigado
Fernando /@ftremonti
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)