[firebase-br] Select com condição (agrupar)

Fabiano Lima frguitar em bol.com.br
Sex Out 21 10:29:20 -03 2011


Opa, funcionou sim cara, fiz alguma adaptaçoes e ficou assim
 
CREATE OR ALTER PROCEDURE NEW_PROCEDURE (
    data_ini DATE,
    data_fim DATE)
RETURNS (
    ccusto VARCHAR(11),
    descricao VARCHAR(25),
    titulo VARCHAR(1),
    data DATE,
    valor NUMERIC(11,2))
AS
DECLARE VARIABLE rccusto VARCHAR(11);
DECLARE VARIABLE rdescricao VARCHAR(25);
DECLARE VARIABLE rvalor NUMERIC(11,2);
DECLARE VARIABLE rdata DATE;
DECLARE VARIABLE vtitulo VARCHAR(1);
DECLARE VARIABLE vtipo VARCHAR(1);
DECLARE VARIABLE vtotal NUMERIC(11,2);
BEGIN

/* Cruza centro de custo entre tabelas lanc e cadccusto */


FOR
SELECT
  CADCCUSTO.CCUSTO,
  CADCCUSTO.DESCRICAO,
  CADCCUSTO.TITULO,
  CADCCUSTO.TIPO,
  (SELECT SUM(LANC.CREDITO - LANC.DEBITO) FROM LANC
   JOIN CADCCUSTO AS CC ON CC.CCUSTO = LANC.CCUSTO
   WHERE CC.CCUSTO STARTING WITH CADCCUSTO.CCUSTO) AS VALOR
FROM CADCCUSTO
ORDER BY CADCCUSTO.CCUSTO


INTO :RCCUSTO, :RDESCRICAO, :VTITULO , :VTIPO , :RVALOR


DO

/* Calcula credito e debito para somar nos centro de custo titulo */

BEGIN

IF (:VTIPO = 'C') THEN

SELECT SUM (LANC.CREDITO) FROM LANC
WHERE CCUSTO >= :RCCUSTO AND CCUSTO LIKE '01%'
INTO :VTOTAL;

ELSE

SELECT SUM (LANC.DEBITO * -1) FROM LANC
WHERE CCUSTO >= :RCCUSTO AND CCUSTO LIKE '01%'
INTO :VTOTAL;


CCUSTO = :RCCUSTO;
DESCRICAO = :RDESCRICAO;
TITULO = VTITULO;
DATA = :RDATA;

/* Chega se Centro custo é titulo para receber a soma */

IF (:VTITULO = 'S') THEN
VALOR = :VTOTAL;

ELSE

VALOR = :RVALOR;

/* Transforma valores nulos em 0 */

IF (VALOR IS NULL ) THEN VALOR = 0.00;

SUSPEND;

END


END


Mas ainda valta um Q final ali para que eu nao tenha que colocar aquele like '01'.
____________________________________________

Em 21/10/2011 10:09, Tecnobyte Informática < temp2 em tecnobyte.com.br > escreveu:
Olá Fabiano

Aquele SELECT que te passei no último e-mail não resolve seu problema? 
Talvez tenha que apenas acrescentar algum detalhe a mais para obter 
exatamente como deseja.

Estou falando deste SELECT:

SELECT
 CadCCusto.CCusto,
 CadCCusto.Descricao,
 (SELECT SUM(Lanc.Credito - Lanc.Debito) FROM Lanc
 JOIN CadCCusto AS CC ON CC.CCusto = Lanc.CCusto
 WHERE CC.CCusto STARTING WITH CadCCusto.CCusto) AS Valor
FROM CadCCusto
WHERE CadCCusto.Titulo = 'S'
ORDER BY CadCCusto.CCusto


Atenciosamente.

Daniel P. Guimarães
Tecnobyte Informática
www.tecnobyte.com.br

-----Mensagem Original----- 
From: Fabiano Lima
Sent: Friday, October 21, 2011 7:24 AM
To: FireBase
Subject: Re: [firebase-br]Select com condição (agrupar)

Então pessoal, com a ajuda dos amigos aqui montei a minha SP para usar no 
meu relatorio.

Existe modo que eu faça um agrupamento de valoers quando o "campo" contiver 
os primeiros caracteres iguais? mas que eu não tenha que colocar

like '01%' pois se não eu terei que fazer um para cada campo

'01.01%'
'01.00.01%'

e essesa valoers são variaveis
a SP apenas checaria os 6 primeiros campos e agruparia os que fossem iguais

abraço


>>Bom dia Fabiano!

>>Tenta ai

>>select sum(valor)
>>from sua_tabela
>>where titulo = 'S'
>>   and ccusto like '01%'


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista