SQL Retornar colunas

18/10/2021

0



Boa Tarde Pessoal!
Tenho a consulta SQL abaixo, preciso que nela retorno a coluna da tabela AMOVFUNDIA.NUMHORAS filtrado pelo codigo, vou precisar de duas colunas, uma para extra 70% e outra para extra 100%

Fiz uma subquery, mas não está retornando os valores corretos, alguém pode me 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'), 5) AS 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'), 6) AS 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
Weverton Lemos

Weverton Lemos

Responder

Post mais votado

18/10/2021

tire H.DATA do group by

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

18/10/2021

Emerson Nascimento

tente algo assim:
SELECT
	F.CHAPA,
	P.NOME,
	S.DESCRICAO,

	format(sum(H.ATRASO) / 60, '00') + ':' + format(sum(H.ATRASO) % 60, '00') AS ATRASO,
	format(sum(H.FALTA) / 60, '00') + ':' + format(sum(H.FALTA) % 60, '00') AS FALTA,
	format(sum(H.COMPENSADO) / 60, '00') + ':' + format(sum(H.COMPENSADO) % 60, '00') AS COMPENSADO,
	format(sum(H.EXTRAEXECUTADO) / 60, '00') + ':' + format(sum(H.EXTRAEXECUTADO) % 60, '00') AS TOTAL_EXTRA_100_70,

	/*DEVERÁ RETORNA O EVENTO DE HORAS EXTRAS A 70% E SOMA-LOS*/
	(SELECT format(sum(M.NUMHORAS) / 60, '00') + ':' + format(sum(M.NUMHORAS) % 60, '00')
	FROM AMOVFUNDIA M
	WHERE M.CODEVE = 0122 -- INDIQUE O EVENTO DESEJADO
	AND M.CHAPA = F.CHAPA -- ASSOCIE AO FUNCIONÁRIO
	AND M.DATA BETWEEN :DATA_INICIAL AND :DATA_FINAL -- UTILIZE O MESMO PERÍODO
	) AS EXTRA70,

	/*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),*/

	format(sum(H.BASE) / 60, '00') + ':' + format(sum(H.BASE) % 60, '00') AS HORASTRAB_SEM_EXTRAS,
	format(sum(H.BASE + H.EXTRAEXECUTADO) / 60, '00') + ':' + format(sum(H.BASE + H.EXTRAEXECUTADO) % 60, '00') AS HORASTRABALHADAS,
	format(sum(H.ADICIONAL) / 60, '00') + ':' + format(sum(H.ADICIONAL) % 60, '00') AS ADICIONAL,
	format(sum(H.ABONO) / 60, '00') + ':' + format(sum(H.ABONO) % 60, '00') 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 BETWEEN :DATA_INICIAL AND :DATA_FINAL )
GROUP BY
	F.CHAPA,
	P.NOME,
	S.DESCRICAO,
	H.DATA
Responder

18/10/2021

Weverton Lemos

Consulta funciona, porém não está agrupando! Está trazendo dia a dia! Preciso somar e apresentar conforme passo o parametro de data....
Responder

18/10/2021

Weverton Lemos

tire H.DATA do group by
Muito Obrigado Emerson funcionou....
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar