Sobre aquilo do saldo de conta.....
Código: Selecionar todos
CREATE FUNCTION SaldoConta( cConta VARCHAR(20), nMes INT(11) )
RETURNS DECIMAL(16,2)
BEGIN
DECLARE nValor DECIMAL(16,2) DEFAULT 0;
SET nValor := (
SELECT
CPSALDOANT
+ IF( nMes > 0, 0, CPDEB01 - CPCRE01 )
+ IF( nMes > 1, 0, CPDEB02 - CPCRE02 )
+ IF( nMes > 2, 0, CPDEB03 - CPCRE03 )
+ IF( nMes > 3, 0, CPDEB04 - CPCRE04 )
+ IF( nMes > 4, 0, CPDEB05 - CPCRE05 )
+ IF( nMes > 5, 0, CPDEB06 - CPCRE06 )
+ IF( nMes > 6, 0, CPDEB07 - CPCRE07 )
+ IF( nMes > 7, 0, CPDEB08 - CPCRE08 )
+ IF( nMes > 8, 0, CPDEB09 - CPCRE09 )
+ IF( nMes > 9, 0, CPDEB10 - CPCRE10 )
+ IF( nMes > 10, 0, CPDEB11 - CPCRE11 )
+ IF( nMes > 11, 0, CPDEB12 - CPCRE12 )
+ IF( nMes > 12, 0, CPDEB13 - CPCRE13 )
+ IF( nMes > 13, 0, CPDEB14 - CPCRE14 )
+ IF( nMes > 14, 0, CPDEB15 - CPCRE15 )
+ IF( nMes > 15, 0, CPDEB16 - CPCRE16 )
+ IF( nMes > 16, 0, CPDEB17 - CPCRE17 )
+ IF( nMes > 17, 0, CPDEB18 - CPCRE18 )
+ IF( nMes > 18, 0, CPDEB19 - CPCRE19 )
+ IF( nMes > 29, 0, CPDEB20 - CPCRE20 )
+ IF( nMes > 20, 0, CPDEB21 - CPCRE21 )
+ IF( nMes > 21, 0, CPDEB22 - CPCRE22 )
+ IF( nMes > 22, 0, CPDEB23 - CPCRE23 )
+ IF( nMes > 23, 0, CPDEB24 - CPCRE24 )
+ IF( nMes > 24, 0, CPDEB25 - CPCRE25 )
+ IF( nMes > 25, 0, CPDEB26 - CPCRE26 )
+ IF( nMes > 26, 0, CPDEB27 - CPCRE27 )
+ IF( nMes > 27, 0, CPDEB28 - CPCRE28 )
+ IF( nMes > 28, 0, CPDEB29 - CPCRE29 )
+ IF( nMes > 29, 0, CPDEB30 - CPCRE30 )
+ IF( nMes > 30, 0, CPDEB31 - CPCRE31 )
+ IF( nMes > 31, 0, CPDEB32 - CPCRE32 )
+ IF( nMes > 32, 0, CPDEB33 - CPCRE33 )
+ IF( nMes > 33, 0, CPDEB34 - CPCRE34 )
+ IF( nMes > 34, 0, CPDEB35 - CPCRE35 )
+ IF( nMes > 35, 0, CPDEB36 - CPCRE36 )
+ IF( nMes > 36, 0, CPDEB37 - CPCRE37 )
+ IF( nMes > 37, 0, CPDEB38 - CPCRE38 )
+ IF( nMes > 38, 0, CPDEB39 - CPCRE39 )
+ IF( nMes > 39, 0, CPDEB40 - CPCRE40 )
+ IF( nMes > 40, 0, CPDEB41 - CPCRE41 )
+ IF( nMes > 41, 0, CPDEB42 - CPCRE42 )
+ IF( nMes > 42, 0, CPDEB43 - CPCRE43 )
+ IF( nMes > 43, 0, CPDEB44 - CPCRE44 )
+ IF( nMes > 44, 0, CPDEB45 - CPCRE45 )
+ IF( nMes > 45, 0, CPDEB46 - CPCRE46 )
+ IF( nMes > 46, 0, CPDEB47 - CPCRE47 )
+ IF( nMes > 47, 0, CPDEB48 - CPCRE48 )
+ IF( nMes > 48, 0, CPDEB49 - CPCRE49 )
+ IF( nMes > 49, 0, CPDEB50 - CPCRE50 )
+ IF( nMes > 50, 0, CPDEB51 - CPCRE51 )
+ IF( nMes > 51, 0, CPDEB52 - CPCRE52 )
+ IF( nMes > 52, 0, CPDEB53 - CPCRE53 )
+ IF( nMes > 53, 0, CPDEB54 - CPCRE54 )
+ IF( nMes > 54, 0, CPDEB55 - CPCRE55 )
+ IF( nMes > 55, 0, CPDEB56 - CPCRE56 )
+ IF( nMes > 56, 0, CPDEB57 - CPCRE57 )
+ IF( nMes > 57, 0, CPDEB58 - CPCRE58 )
+ IF( nMes > 58, 0, CPDEB59 - CPCRE59 )
+ IF( nMes > 59, 0, CPDEB60 - CPCRE60 )
+ IF( nMes > 60, 0, CPDEB61 - CPCRE61 )
+ IF( nMes > 61, 0, CPDEB62 - CPCRE62 )
+ IF( nMes > 62, 0, CPDEB63 - CPCRE63 )
+ IF( nMes > 63, 0, CPDEB64 - CPCRE64 )
+ IF( nMes > 64, 0, CPDEB65 - CPCRE65 )
+ IF( nMes > 65, 0, CPDEB66 - CPCRE66 )
+ IF( nMes > 66, 0, CPDEB67 - CPCRE67 )
+ IF( nMes > 67, 0, CPDEB68 - CPCRE68 )
+ IF( nMes > 68, 0, CPDEB69 - CPCRE69 )
+ IF( nMes > 69, 0, CPDEB70 - CPCRE70 )
+ IF( nMes > 70, 0, CPDEB71 - CPCRE71 )
+ IF( nMes > 71, 0, CPDEB72 - CPCRE72 )
+ IF( nMes > 72, 0, CPDEB73 - CPCRE73 )
+ IF( nMes > 73, 0, CPDEB74 - CPCRE74 )
+ IF( nMes > 74, 0, CPDEB75 - CPCRE75 )
+ IF( nMes > 75, 0, CPDEB76 - CPCRE76 )
+ IF( nMes > 76, 0, CPDEB77 - CPCRE77 )
+ IF( nMes > 77, 0, CPDEB78 - CPCRE78 )
+ IF( nMes > 78, 0, CPDEB79 - CPCRE79 )
+ IF( nMes > 79, 0, CPDEB80 - CPCRE80 )
+ IF( nMes > 80, 0, CPDEB81 - CPCRE81 )
+ IF( nMes > 81, 0, CPDEB82 - CPCRE82 )
+ IF( nMes > 82, 0, CPDEB83 - CPCRE83 )
+ IF( nMes > 83, 0, CPDEB84 - CPCRE84 )
+ IF( nMes > 84, 0, CPDEB85 - CPCRE85 )
+ IF( nMes > 85, 0, CPDEB86 - CPCRE86 )
+ IF( nMes > 86, 0, CPDEB87 - CPCRE87 )
+ IF( nMes > 87, 0, CPDEB88 - CPCRE88 )
+ IF( nMes > 88, 0, CPDEB89 - CPCRE89 )
+ IF( nMes > 89, 0, CPDEB90 - CPCRE90 )
+ IF( nMes > 90, 0, CPDEB91 - CPCRE91 )
+ IF( nMes > 91, 0, CPDEB92 - CPCRE92 )
+ IF( nMes > 92, 0, CPDEB93 - CPCRE93 )
+ IF( nMes > 93, 0, CPDEB94 - CPCRE94 )
+ IF( nMes > 94, 0, CPDEB95 - CPCRE95 )
+ IF( nMes > 95, 0, CPDEB96 - CPCRE96 )
FROM JPCTCONTA
WHERE IDCONTA = cConta );
RETURN nValor;
END
Desta forma é um único SELECT.
Nota: só criei de curiosidade, ainda não resolvi se vou fazer assim mesmo, igual é em DBF.
Algumas coisas vou só fazendo testes, pra ver o que dá.... assim vou criando idéias...