Fórum Somar dois campos em função de condição na Select do IB. #172221
29/07/2003
0
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
Curtir tópico
+ 0Posts
29/07/2003
Rômulo Barros
Procure documentos sobre História de Procedure......
Gostei + 0
29/07/2003
Afarias
|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+
Gostei + 0
29/07/2003
Rômulo Barros
Correto. Foi mal... o certo é procedure.... Mas deu pra entender... :oops: :oops: :oops:
Gostei + 0
29/07/2003
Buosinet
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.
Gostei + 0
30/07/2003
Afarias
| {...}
|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+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)