Fórum Somar dois campos em função de condição na Select do IB. #172221

29/07/2003

0

Eu consigo fazer uma soma de dois campos na select somente se uma condição for verdadeira?
Ex.
SELECT CAMPO1,CAMPO2,CAMPO3,
//Aqui entraria um IF
if campo1 > 0 then
SUM(CAMPO1,CAMPO2)
else
SUM(CAMPO3,CAMPO3)

FROM TABELA WHERE QUALQUER_CONDICAO

valeu

Estou tentando fazer isso no INTERBASE.


Adriano Santos

Adriano Santos

Responder

Posts

29/07/2003

Rômulo Barros

Colega. Com certeza isso pode, porém eu ainda não sei fazer direito, por isso, não vou postar nada aqui, mantendo assim a veracidade da informação. O seu problema está relacionado com HISTÓRIA DE PROCEDURE. A história de procedure nada mais é do que vc criar uma função no próprio banco de dados, utilizando assim o IF, ELSE THEN ...

Procure documentos sobre História de Procedure......


Responder

Gostei + 0

29/07/2003

Afarias

Favor, postar as questões sobre Interbase no fórum de INTERBASE.

|Eu consigo fazer uma soma de dois campos na select somente se uma
|condição for verdadeira? Estou tentando fazer isso no INTERBASE.

NÃO. Não existe função tal como a que vc citou no INTERBASE.

Entretanto, vc pode utilizar STORED PROCEDURES para realizar esta operação no INTERBASE.

Só complementando, o FIREBIRD 1.5 possui a função CASE que realiza o q vc quer.


T+


Responder

Gostei + 0

29/07/2003

Rômulo Barros

||NÃO. Não existe função tal como a que vc citou no INTERBASE.

Correto. Foi mal... o certo é procedure.... Mas deu pra entender... :oops: :oops: :oops:


Responder

Gostei + 0

29/07/2003

Buosinet

Dá, sim... Faça o seguinte:

var StrSQL : String;

StrSQL := ´SELECT CAMPO1,CAMPO2,CAMPO3, ´;
if campo1 > 0 then
StrSQL := StrSQL + ´SUM(CAMPO1,CAMPO2) ´
else
StrSQL := StrSQL + ´SUM(CAMPO3,CAMPO3) ´;

with qryConsulta do begin
SQL.Clear;
SQL.Add(StrSQL);
SQL.Add(´FROM TABELA ´);
SQL.Add(´WHERE CONDICAO ´);
SQL.Add(´GROUP BY CAMPO1, CAMPO2, CAMPO3´);
Open;
end;


Obs: Não esqueça que, ao usar campos normais com SUM, COUNT ou funções do tipo, colocar os campos normais no GROUP BY, senão não roda.

Qualquer dúvida, é só falar

Buosi.


Responder

Gostei + 0

30/07/2003

Afarias

|Dá, sim... Faça o seguinte:
| {...}

|StrSQL := ´SELECT CAMPO1,CAMPO2,CAMPO3, ´;
|if campo1 > 0 then
|StrSQL := StrSQL + ´SUM(CAMPO1,CAMPO2) ´


Eu tenho uma dúvida: como é q ele sabe o valor de CAMPO1 sem antes ter executado a query??

Esta sua solução em Delphi não existe, para a necessidade apresentada, o código deve ficar no Interbase (stored procedures)

T+


Responder

Gostei + 0

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

Aceitar