Fabio Silva Santos Postado 30 de Agosto de 2013 Tópicos Que Criei: 12 Tópicos/Dia: 0.00 Meu Conteúdo: 15 Conteúdo/Dia: 0.00 Reputação: 1 Pontos/Conquistas: 196 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 43 Denunciar Compartilhar Postado 30 de Agosto de 2013 Bom dia alguém teria um relatório de provisões de férias e de 13 salário que traga os valores correspondente ao salário e seção da época, considerando os históricos de seção e salário e transferências entre seções do mesmo nível, seções de outro nível. Consegui chegar nesta SQL, mas quando funcionário é transferido, e ao gerar o relatório com referencia a competências passadas o valor não bate, pois falta os funcionários transferidos. SELECT C.NROCENCUSTOCONT QUEBRA$, F.NOME AS CC, A.CODCOLIGADA, A.CHAPA, A.ANO, A.MES, E.NOME, E.dataadmissao, E.dtvencferias, A.nroavosvencferdec || ' / ' || A.nroavosproporcdec, /*A.valprovfer,*/ I.vaLOR, E.nrodiasferias, CAST (CASE WHEN C.NROCENCUSTOCONT IS NULL THEN 'NAO SECAO ' || D.CODSECAO ||'NAO TEM CENTRO DE CUSTO AJUSTAR' ELSE C.NROCENCUSTOCONT END AS VARCHAR(10)) /* A.CODPCCUSTO CENTRO DE CUSTO DA SE«√O DA EPOCA)*/ AS CENTRO_CUSTO, H.SALARIO FROM rm.pfhstprov A LEFT OUTER JOIN ( SELECT AA.CODCOLIGADA, AA.CHAPA, MAX (AA.DTMUDANCA) AS DTMUDANCA, Z.ANO, Z.MES FROM RM.PFHSTSEC AA LEFT OUTER JOIN ( SELECT Z.CODCOLIGADA, Z.CHAPA, to_date (CASE WHEN TO_CHAR(E.DATAADMISSAO,'YYYY')=Z.ANO AND TO_CHAR(E.DATAADMISSAO,'MM')=Z.MES THEN CAST(TO_CHAR(E.DATAADMISSAO,'DD') AS VARCHAR(10)) ELSE '1' END ||'/'|| CAST (Z.MES AS VARCHAR(10)) ||'/'|| CAST (Z.ANO AS VARCHAR(10)) , 'DD/MM/YYYY' )/* PARA ORACLE MUDAR PARA DATE SQL PARA DATETIME*/ AS DATA1, Z.MES, Z.ANO FROM rm.pfhstprov Z LEFT OUTER JOIN RM.PFUNC E ON Z.CODCOLIGADA=E.CODCOLIGADA AND E.CHAPA=Z.CHAPA WHERE Z.MES=:MES AND Z.ANO=:ANO ) Z ON Z.CODCOLIGADA=AA.CODCOLIGADA AND Z.CHAPA=AA.CHAPA /* AND Z.DATA1>=AA.DTMUDANCA*/ GROUP BY AA.CODCOLIGADA,AA.CHAPA,Z.ANO, Z.MES) B ON A.CODCOLIGADA=B.CODCOLIGADA AND A.CHAPA=B.CHAPA AND A.MES=B.MES AND A.ANO=B.ANO LEFT OUTER JOIN RM.PFHSTSEC D ON B.CODCOLIGADA=D.CODCOLIGADA AND D.CHAPA=B.CHAPA AND D.DTMUDANCA=B.DTMUDANCA LEFT OUTER JOIN RM.PSECAO C ON D.CODCOLIGADA=C.CODCOLIGADA AND D.CODSECAO=C.CODIGO LEFT OUTER JOIN RM.PFUNC E ON A.CODCOLIGADA=E.CODCOLIGADA AND A.CHAPA=E.CHAPA LEFT OUTER JOIN RM.PCCUSTO F ON C.CODCOLIGADA=F.CODCOLIGADA AND C.NROCENCUSTOCONT=F.CODCCUSTO LEFT OUTER JOIN ( SELECT AA.CODCOLIGADA, AA.CHAPA, MAX (AA.DTMUDANCA) AS DTMUDANCA, Z.ANO, Z.MES FROM RM.PFHSTSAL AA LEFT OUTER JOIN ( SELECT Z.CODCOLIGADA, Z.CHAPA, to_date (CASE WHEN TO_CHAR(E.DATAADMISSAO,'YYYY')=Z.ANO AND TO_CHAR(E.DATAADMISSAO,'MM')=Z.MES THEN CAST(TO_CHAR(E.DATAADMISSAO,'DD') AS VARCHAR(10)) ELSE '1' END ||'/'|| CAST (Z.MES AS VARCHAR(10)) ||'/'|| CAST (Z.ANO AS VARCHAR(10)) , 'DD/MM/YYYY' )/* PARA ORACLE MUDAR PARA DATE SQL PARA DATETIME*/ AS DATA1, Z.MES, Z.ANO FROM rm.pfhstPROV Z LEFT OUTER JOIN RM.PFUNC E ON Z.CODCOLIGADA=E.CODCOLIGADA AND E.CHAPA=Z.CHAPA ) Z ON Z.CODCOLIGADA=AA.CODCOLIGADA AND Z.CHAPA=AA.CHAPA AND Z.DATA1>=AA.DTMUDANCA GROUP BY AA.CODCOLIGADA,AA.CHAPA,Z.ANO, Z.MES) G ON A.CODCOLIGADA=G.CODCOLIGADA AND A.CHAPA=G.CHAPA AND A.MES=G.MES AND A.ANO=G.ANO LEFT OUTER JOIN RM.PFHSTSAL H ON G.CODCOLIGADA=H.CODCOLIGADA AND H.CHAPA=G.CHAPA AND H.DTMUDANCA=G.DTMUDANCA LEFT OUTER JOIN RM.PFENCARGO I ON A.CODCOLIGADA=I.CODCOLIGADA AND A.CHAPA=I.CHAPA WHERE C.CODIGO LIKE:CSECAO AND A.CODCOLIGADA=:COLIGADA AND A.ANO=:ANO AND A.MES=:MES AND I.ANOCOMP=:ANO AND I.MESCOMP=:MES AND I.CODENCARGO='05' AND A.nroavosvencferdec =0 AND A.nroavosproporcdec =0 ORDER BY a.ano,a.mes,F.CODCCUSTO,E.NOME Atenciosamente. Fabio Silva Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Participe da conversa
Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.