Jump to content


Photo

[RESUELTO] Ayuda con SQL - Totalizar varias columnas


  • Please log in to reply
5 replies to this topic

#1 apicito

apicito

    Advanced Member

  • Miembros
  • PipPipPip
  • 104 posts

Posted 14 May 2012 - 03:47 AM



delphi
  1.     sql.Add('select');
  2.     sql.Add('SUM(PISREC_TOTAL) as TOTAL,');
  3.     sql.Add('SUM(PISREC_NUM_EUN) as EUN,');
  4.     sql.Add('SUM(PISREC_NUM_EUA) as EUA,');
  5.     sql.Add('SUM(PISREC_NUM_N) as N,');
  6.     sql.Add('SUM(PISREC_NUM_A) as A');
  7.     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?
  • 0

#2 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1484 posts
  • LocationMallorca

Posted 14 May 2012 - 05:51 AM

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.
  • 0

#3 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2092 posts
  • LocationRepública Dominicana

Posted 14 May 2012 - 06:13 AM

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.
  • 0

#4 bigleaguer

bigleaguer

    Advanced Member

  • Miembros
  • PipPipPip
  • 66 posts

Posted 14 May 2012 - 08:58 AM

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

Prueba cambiar:
   


delphi
  1.     sql.Add('select');
  2.     sql.Add('SUM(PISREC_TOTAL) as TOTAL,');
  3.     sql.Add('SUM(PISREC_NUM_EUN) as EUN,');
  4.     sql.Add('SUM(PISREC_NUM_EUA) as EUA,');
  5.     sql.Add('SUM(PISREC_NUM_N) as N,');
  6.     sql.Add('SUM(PISREC_NUM_A) as A');
  7.     sql.Add('from PISREC where PISREC_DATA='+DataTexto);



Por:



delphi
  1.   sql.Add('SELECT '); //<- Espacio en blanco al final
  2.   sql.Add('SUM(PISREC_TOTAL) as TOTAL,');
  3.   sql.Add('SUM(PISREC_NUM_EUN) as EUN,');
  4.   sql.Add('SUM(PISREC_NUM_EUA) as EUA,');
  5.   sql.Add('SUM(PISREC_NUM_N) as N,');
  6.   sql.Add('SUM(PISREC_NUM_A) as A '); //<- Espacio en blanco al final
  7.   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:


delphi
  1. sql.Add('FROM PISREC where PISREC_DATA='+QuotedStr(DataTexto));


  • 0

#5 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2092 posts
  • LocationRepública Dominicana

Posted 14 May 2012 - 09:03 AM

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


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.
  • 0

#6 apicito

apicito

    Advanced Member

  • Miembros
  • PipPipPip
  • 104 posts

Posted 15 May 2012 - 02:03 AM

Perdonad el retraso pero tuve que dejar lo que estaba haciendo para apagar un incendio.
El problema estaba en el tratamiento de los nulos que me estropeaba el resultado.
Aunque en el código que puse no hacía quotedstr de la fecha en texto si que lo estaba utilizando.
Gracias a todos por la ayuda.
  • 0




IP.Board spam blocked by CleanTalk.