Fórum Mais uma de função #620801
05/12/2023
0
Olá pessoal,
Preciso criar uma função que me retorne a soma dos valores dos eventos de férias. A consulta SQL retorna certinha mas quando tento criar a função retorna o erro:
Msg 130, Nível 15, Estado 1, Procedimento fn_FeriasLiquido, Linha 17 [Linha de Início do Lote 0]
Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
Como posso resolver isso?
Grato.
Preciso criar uma função que me retorne a soma dos valores dos eventos de férias. A consulta SQL retorna certinha mas quando tento criar a função retorna o erro:
Msg 130, Nível 15, Estado 1, Procedimento fn_FeriasLiquido, Linha 17 [Linha de Início do Lote 0]
Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | CREATE OR ALTER FUNCTION [dbo].[fn_FeriasLiquido] ( @CHAPA_S AS VARCHAR (16) ) RETURNS DECIMAL (18,2) AS BEGIN DECLARE @FIMPERAQUIS_D AS DATETIME DECLARE @RETORNO AS DECIMAL (18,2) SET @FIMPERAQUIS_D = ( SELECT MAX (X.FIMPERAQUIS) FROM PFUFERIAS X WHERE X.PERIODOABERTO = 0 AND X.CHAPA = @CHAPA_S) SET @RETORNO = SUM (( SELECT CASE B.PROVDESCBASE WHEN '' D '' THEN A.VALOR * -1 WHEN '' P '' THEN A.VALOR ELSE 0 END FROM PFUFERIASVERBAS A INNER JOIN PEVENTO B ON (B.CODIGO = A.CODEVENTO AND B.CODCOLIGADA = A.CODCOLIGADA) WHERE A.CHAPA = @CHAPA_S AND A.FIMPERAQUIS = @FIMPERAQUIS_D)) RETURN @RETORNO END |
Como posso resolver isso?
Grato.

Ilano Caldas
Curtir tópico
+ 0
Responder
Posts
05/12/2023
Ilano Caldas
Consegui resolver! Ficou assim:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | CREATE OR ALTER FUNCTION [dbo].[fn_FeriasLiquido] ( @CHAPA_S AS VARCHAR (16) ) RETURNS DECIMAL (18,2) AS BEGIN DECLARE @FIMPERAQUIS_D AS DATETIME DECLARE @RETORNO AS DECIMAL (18,2) SET @RETORNO = ( SELECT SUM (A.VALOR) FROM PFUFERIASVERBAS A INNER JOIN PEVENTO B ON (B.CODIGO = A.CODEVENTO AND B.CODCOLIGADA = A.CODCOLIGADA) WHERE B.PROVDESCBASE = 'P' AND A.CHAPA = @CHAPA_S AND A.FIMPERAQUIS = ( SELECT MAX (X.FIMPERAQUIS) FROM PFUFERIAS X WHERE X.PERIODOABERTO = 0 AND X.CHAPA = @CHAPA_S)) - ( SELECT SUM (A.VALOR) FROM PFUFERIASVERBAS A INNER JOIN PEVENTO B ON (B.CODIGO = A.CODEVENTO AND B.CODCOLIGADA = A.CODCOLIGADA) WHERE B.PROVDESCBASE = 'D' AND A.CHAPA = @CHAPA_S AND A.FIMPERAQUIS = ( SELECT MAX (X.FIMPERAQUIS) FROM PFUFERIAS X WHERE X.PERIODOABERTO = 0 AND X.CHAPA = @CHAPA_S)) RETURN @RETORNO END |
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)