[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