Ir para conteúdo

Erro consulta sql retorno dados outra tabela sub query RM automação de ponto


Posts Recomendados


  • Tópicos Que Criei:  30
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  152
  • Conteúdo/Dia:  0.03
  • Reputação:   3
  • Pontos/Conquistas:  1.193
  • Conteúdo Resolvido:  0
  • Dias Ganho:  5
  • Status:  Offline
  • Idade:  36
  • Dispositivo:  iPhone

Bom dia Pessoal! Estou com problemas na consulta abaixo, preciso retornar as horas extras a 70% em uma coluna, e 100% em outra coluna, através da tabela AMOVFUNDIA… e incorporar a consulta abaixo… alguém pode ajudar…
 

 

 

SELECT F.CHAPA,

       P.NOME,

       S.DESCRICAO,

       LEFT(FORMAT(Sum(H.ATRASO) / 60'00') + ':'

            FORMAT((Sum(H.ATRASO) / 60.0 Sum(H.ATRASO) / 60) * 60'00'), 5)                                   AS ATRASO,

       LEFT(FORMAT(Sum(H.FALTA) / 60'00') + ':'

            FORMAT((Sum(H.FALTA) / 60.0 Sum(H.FALTA) / 60) * 60'00'), 5)                                     AS FALTA,

       LEFT(FORMAT(Sum(H.COMPENSADO) / 60'00') + ':'

            FORMAT((Sum(H.COMPENSADO) / 60.0 Sum(H.COMPENSADO) / 60) * 60'00'), 5)                           AS COMPENSADO,

       LEFT(FORMAT(Sum(H.EXTRAEXECUTADO) / 60'00')

            + ':'

            FORMAT((Sum(H.EXTRAEXECUTADO) / 60.0 Sum(H.EXTRAEXECUTADO) / 60) * 60'00'), 6)                   AS TOTAL_EXTRA_100_70,

       

       /*DEVERÁ RETORNA O EVENTO DE HORAS EXTRAS A 70% E SOMA-LOS*/

       (SELECT LEFT(FORMAT(Sum(M.NUMHORAS) / 60'00') + ':'

                    FORMAT((Sum(M.NUMHORAS) / 60.0 Sum(M.NUMHORAS) / 60) * 60'00'), 5AS EXTRA70

        FROM   AMOVFUNDIA M

        WHERE  CODEVE 0122

               AND M.DATA >= H.DATA

               AND M.DATA <= H.DATA),

               

       /*DEVERÁ RETORNA O EVENTO DE HORAS EXTRAS A 100% E SOMA-LOS*/

       /*(SELECT M.NUMHORAS AS EXTRA100

       FROM   AMOVFUNDIA M

       WHERE  CODEVE = 0122

       AND M.DATA >= H.DATA

       AND M.DATA <= H.DATA),*/

 

       LEFT(FORMAT(Sum(H.BASE) / 60'00') + ':'

            FORMAT((Sum(H.BASE) / 60.0 Sum(H.BASE) / 60) * 60'00'), 5)                                       AS HORASTRAB_SEM_EXTRAS,

       LEFT(FORMAT(Sum(H.BASE H.EXTRAEXECUTADO) / 60'00')

            + ':'

            FORMAT((Sum(H.BASE H.EXTRAEXECUTADO) / 60.0 Sum(H.BASE H.EXTRAEXECUTADO) / 60) * 60'00'), 6AS HORASTRABALHADAS,

       LEFT(FORMAT(Sum(H.ADICIONAL) / 60'00') + ':'

            FORMAT((Sum(H.ADICIONAL) / 60.0 Sum(H.ADICIONAL) / 60) * 60'00'), 5)                             AS ADICIONAL,

       LEFT(FORMAT(Sum(H.ABONO) / 60'00') + ':'

            FORMAT((Sum(H.ABONO) / 60.0 Sum(H.ABONO) / 60) * 60'00'), 5)                                     AS ABONO,

       F.CHAPA                                                                                                     AS CHAPA_BASE

FROM   PPESSOA AS P

       INNER JOIN PFUNC AS F

               ON P.CODIGO F.CODPESSOA

       INNER JOIN PSECAO AS S

               ON F.CODCOLIGADA S.CODCOLIGADA

                  AND F.CODSECAO S.CODIGO

       INNER JOIN AAFHTFUN AS H

               ON F.CHAPA H.CHAPA

WHERE  F.CODCOLIGADA :COLIGADA

       AND H.DATA >= :DATA_INICIAL )

       AND H.DATA <= :DATA_FINAL )

GROUP  BY F.CHAPA,

          P.NOME,

          S.DESCRICAO,

          H.DATA

Editado por weverton dias
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  470
  • Conteúdo/Dia:  0.21
  • Reputação:   132
  • Pontos/Conquistas:  3.143
  • Conteúdo Resolvido:  0
  • Dias Ganho:  63
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Android

@weverton dias, boa tarde!

Segue, possível solução. 

 

TOTVS-RM/UTL_GET_HORA.sql at master · luisgustavogomes/TOTVS-RM (github.com)

/*

USE CORPORERM
GO 


DECLARE @CODCOLIGADA INT = 1 ;
DECLARE @DATAINCIAL DATETIME = '2021-08-16'
DECLARE @DATAFINAL DATETIME = '2021-09-15'

;WITH TAB_DADOS_FUNC
AS
(
    SELECT 
         F.CODCOLIGADA
        ,F.CHAPA
        ,P.NOME
        ,S.DESCRICAO
        ,H.[DATA]
        ,SUM(H.ATRASO) AS 'ATRASO'
        ,SUM(H.FALTA) AS 'FALTA'
        ,SUM(H.COMPENSADO) AS 'COMPENSADO'
        ,SUM(H.EXTRAEXECUTADO) AS 'TOTAL_EXTRA'
        ,SUM(H.BASE) AS 'HORASTRAB_SEM_EXTRAS'
        ,SUM(H.BASE + H.EXTRAEXECUTADO) AS 'HORASTRABALHADAS'
        ,SUM(H.ADICIONAL) AS 'ADICIONAL'
        ,SUM(H.ABONO) AS 'ABONO'
    FROM DBO.PPESSOA AS P
    INNER JOIN DBO.PFUNC  AS F ON ( P.CODIGO = F.CODPESSOA )
    INNER JOIN DBO.PSECAO AS S ON (F.CODCOLIGADA = S.CODCOLIGADA AND F.CODSECAO = S.CODIGO)
    INNER JOIN DBO.AAFHTFUN AS H ON (F.CODCOLIGADA = H.CODCOLIGADA AND F.CHAPA = H.CHAPA)
    WHERE  F.CODCOLIGADA = @CODCOLIGADA
    AND ( F.CODSITUACAO = 'D' OR F.DATADEMISSAO >= @DATAINCIAL)
    AND ( H.[DATA] >= @DATAINCIAL )
    AND ( H.[DATA] <= @DATAFINAL )
    GROUP BY F.CODCOLIGADA
        ,F.CHAPA
        ,P.NOME
        ,S.DESCRICAO
        ,H.[DATA]
)
, TAB_DADOS
AS
(
    SELECT 
         TD.CODCOLIGADA
        ,TD.CHAPA
        ,TD.NOME
        ,TD.DESCRICAO
        ,TD.[DATA]
        ,TD.ATRASO
        ,TD.FALTA
        ,TD.COMPENSADO
        ,TD.TOTAL_EXTRA
        ,TD.HORASTRAB_SEM_EXTRAS
        ,TD.HORASTRABALHADAS
        ,TD.ADICIONAL
        ,TD.ABONO
        ,ISNULL(E1.VALOR,0) AS 'E1VALOR'
        ,ISNULL(E2.VALOR,0) AS 'E2VALOR'
    FROM TAB_DADOS_FUNC TD
    OUTER APPLY 
    (
        SELECT M.VALOR 
        FROM DBO.AMOVFUNDIA M
        WHERE M.CODCOLIGADA = TD.CODCOLIGADA 
        AND M.CHAPA = TD.CHAPA 
        AND M.[DATA] = TD.[DATA]
        AND M.CODEVE = '0051' /*TESTE*/
    ) E1
    OUTER APPLY 
    (
        SELECT M.VALOR 
        FROM DBO.AMOVFUNDIA M
        WHERE M.CODCOLIGADA = TD.CODCOLIGADA 
        AND M.CHAPA = TD.CHAPA 
        AND M.[DATA] = TD.[DATA]
        AND M.CODEVE = '0040'/*TESTE*/
    ) E2
    /*CRIAÇÃO DOS EVENTOS*/
)
SELECT 
     TD.CODCOLIGADA
    ,TD.CHAPA
    ,TD.NOME
    ,TD.DESCRICAO
    ,[dbo].[UTL_GET_HORA](SUM(TD.ATRASO)) AS 'ATRASO'
    ,[dbo].[UTL_GET_HORA](SUM(TD.FALTA)) AS 'FALTA'
    ,[dbo].[UTL_GET_HORA](SUM(TD.COMPENSADO)) AS 'COMPENSADO'
    ,[dbo].[UTL_GET_HORA](SUM(TD.TOTAL_EXTRA)) AS 'TOTAL_EXTRA'
    ,[dbo].[UTL_GET_HORA](SUM(TD.HORASTRAB_SEM_EXTRAS)) AS 'HORASTRAB_SEM_EXTRAS'
    ,[dbo].[UTL_GET_HORA](SUM(TD.HORASTRABALHADAS)) AS 'HORASTRABALHADAS'
    ,[dbo].[UTL_GET_HORA](SUM(TD.ADICIONAL)) AS 'ADICIONAL'
    ,[dbo].[UTL_GET_HORA](SUM(TD.ABONO)) AS 'ABONO'
    ,[dbo].[UTL_GET_HORA](SUM(TD.E1VALOR)) AS 'E2VALOR'
    ,[dbo].[UTL_GET_HORA](SUM(TD.E2VALOR)) AS 'E2VALOR'
FROM TAB_DADOS TD
GROUP BY TD.CODCOLIGADA
    ,TD.CHAPA
    ,TD.NOME
    ,TD.DESCRICAO
 

 

/*

 

abraços.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  885
  • Tópicos/Dia:  0.13
  • Meu Conteúdo:  8.802
  • Conteúdo/Dia:  1.34
  • Reputação:   291
  • Pontos/Conquistas:  106.268
  • Conteúdo Resolvido:  0
  • Dias Ganho:  185
  • Status:  Offline
  • Idade:  51
  • Dispositivo:  Windows

Muito bom Luis!!!! 😀

 

@weverton dias para o uso dessa sentença que o Luis postou, observe que terá que gravar antes  no seu banco de dados, a função que ele deixou no link logo no início ok ? Senão, a consulta não irá funcionar. 

 

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  470
  • Conteúdo/Dia:  0.21
  • Reputação:   132
  • Pontos/Conquistas:  3.143
  • Conteúdo Resolvido:  0
  • Dias Ganho:  63
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Android

Pessoal, 

 

 

Podem também envolver a consulta existente em uma CTE e juntar esse query... abraços!

Link para comentar
Compartilhar em outros sites

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.

Visitante
Responder esse tópico

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Seu link foi automaticamente inserido no corpo do post.   Exibir como um link

×   Seu conteúdo anterior foi restaurado.   Limpar conteúdo do editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.