BASES DE DATOS > Firebird

[RESUELTO] Ayuda con SQL - Totalizar varias columnas

(1/2) > >>

apicito:

--- Código DELPHI ---    sql.Add('select');    sql.Add('SUM(PISREC_TOTAL) as TOTAL,');    sql.Add('SUM(PISREC_NUM_EUN) as EUN,');    sql.Add('SUM(PISREC_NUM_EUA) as EUA,');    sql.Add('SUM(PISREC_NUM_N) as N,');    sql.Add('SUM(PISREC_NUM_A) as A');    sql.Add('from PISREC where PISREC_DATA='+DataTexto);
Quería hacer una consulta que me totalizara varios campos, algo parecido a lo que pongo arriba pero esto no funciona.
Alguien me puede ayudar?

Marc:
Hola.

La consulta es correcta, ¿ que error te da ? (parece un problema de tener mal escrito un nombre de campo, o de construir mal el filtro WHERE, con tipos de datos inconsistentes en la comparación).

Saludos.

Rolphy Reyes:
Saludos.

¿Puedes mostrarnos que error te da?.  Debes tener en cuenta que si alguna columna tiene un valor nulo dentro del conjunto de registros que involucra el filtro te mostrara nulo a pesar de tener valores; para eso debes utilizar COALESCE.

bigleaguer:
Saludos.
Parece que no estás dejando los espacios en blancos necesarios cuando construyes la sentencia.

Prueba cambiar:
   

--- Código DELPHI ---    sql.Add('select');    sql.Add('SUM(PISREC_TOTAL) as TOTAL,');    sql.Add('SUM(PISREC_NUM_EUN) as EUN,');    sql.Add('SUM(PISREC_NUM_EUA) as EUA,');    sql.Add('SUM(PISREC_NUM_N) as N,');    sql.Add('SUM(PISREC_NUM_A) as A');    sql.Add('from PISREC where PISREC_DATA='+DataTexto);
Por:


--- Código DELPHI ---  sql.Add('SELECT '); //<- Espacio en blanco al final  sql.Add('SUM(PISREC_TOTAL) as TOTAL,');  sql.Add('SUM(PISREC_NUM_EUN) as EUN,');  sql.Add('SUM(PISREC_NUM_EUA) as EUA,');  sql.Add('SUM(PISREC_NUM_N) as N,');  sql.Add('SUM(PISREC_NUM_A) as A '); //<- Espacio en blanco al final  sql.Add('FROM PISREC where PISREC_DATA='+DataTexto);
Tambien ten encuenta que si la variable DataTexto es del tipo string ó cadena, deberias de concatenar la cadena de la siguiente forma:

--- Código DELPHI ---sql.Add('FROM PISREC where PISREC_DATA='+QuotedStr(DataTexto));

Rolphy Reyes:

--- Cita de: bigleaguer en 14 de Mayo de 2012, 09:58:51 ---Saludos.
Parece que no estás dejando los espacios en blancos necesarios cuando construyes la sentencia.


--- Fin cita ---

Saludos.

Cuando utilizas el método Add no es necesario dejar espacios, recuerda que la propiedad SQL desciende de TStrings.

Ahora bien si fuera que estuviera utilizando la propiedad Text del SQL, si es necesario que lo que indicas ocurra.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa