Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Sql Paradox 7, insertar una fila con total (https://www.clubdelphi.com/foros/showthread.php?t=89718)

juanpy70 22-01-2016 18:36:20

Sql Paradox 7, insertar una fila con total
 
Estimados,

Recurro a ustedes con una emergencia.

Esta consulta esta realizada en Sql para Paradox 7, y busco y busco resolver, pero ya me es imposible.

Código SQL [-]
    select p.anyo,p.numero,p.version,c.nombre,p.fecharealizacion,p.descripcion,d.descripcion,ls.descripcion,
           ls.cantidad,lc.tipoelemento,lc.unidad,lc.cantidad,ls.cantidad*lc.cantidad as total
      from Proyectp p
inner join Cliente c on p.codigocliente=c.codigo
inner join DesglSp d on p.anyo=d.anyo and p.numero=d.numeroproyecto
       and p.version=d.version
inner join LDesgLsp ls on d.anyo=ls.anyo and d.numeroproyecto=ls.numeroproyecto
       and d.version=ls.version and d.codigocapitulo=ls.codigocapitulo
inner join LDesgCom lc on ls.anyo=lc.anyo and ls.numeroproyecto=lc.numeroproyecto
       and ls.version=lc.version and ls.codigocapitulo=lc.codigocapitulo and ls.linea=lc.lineapartida
     where p.fecharealizacion="21.01.2016"
       and lc.tipoelemento="Operacion"
       and lc.unidad="Horas"





    select " "," "," "," "," "," "," "," "," "," "," "," ",sum(ls.cantidad*lc.cantidad) as total
      from Proyectp p
inner join Cliente c on p.codigocliente=c.codigo
inner join DesglSp d on p.anyo=d.anyo and p.numero=d.numeroproyecto
       and p.version=d.version
inner join LDesgLsp ls on d.anyo=ls.anyo and d.numeroproyecto=ls.numeroproyecto
       and d.version=ls.version and d.codigocapitulo=ls.codigocapitulo
inner join LDesgCom lc on ls.anyo=lc.anyo and ls.numeroproyecto=lc.numeroproyecto
       and ls.version=lc.version and ls.codigocapitulo=lc.codigocapitulo and ls.linea=lc.lineapartida
     where p.fecharealizacion="21.01.2016"
       and lc.tipoelemento="Operacion"
       and lc.unidad="Horas"

Esta consulta luego de generar la muestra, supone la unión de una celda con el resultado de sum(ls.cantidad*lc.cantidad), pero lamentablemente esto no ocurre.

Puede alguien ayudarme?

Muchas gracias

Casimiro Notevi 22-01-2016 20:46:58

No he entendido nada.

AgustinOrtu 22-01-2016 21:05:59

De acuerdo con Casimiro..

Tirar un "choclo" o una "ensalada de frutas" para que nosotros lo entendamos y lo resolvamos me resulta hasta ofensivo

Deberias explicar que estructura tiene tu base de datos, que motor usas, que drivers usas para conectarte, que componentes, que informacion necesitas extraer de la base de datos, que consulta estas usando y porque esta mal:

Devuelve resultados que no son, devuelve de mas, filtra mal, ni ejecuta??

juanpy70 22-01-2016 21:06:39

Sql Paradox 7, insertar una fila con total
 
Explico:

- DB PARADOX 7 (Ver titulo)
- Tablas implicadas 5
- La consulta publicada genera un muestra de registros que cumplen la condición.
- La idea es generar la consulta
- Luego al final insertar una fila con totales UNION ALL

En la consulta falto la clausula UNION ALL (corregido)

Código SQL [-]
    select p.anyo,p.numero,p.version,c.nombre,p.fecharealizacion,p.descripcion,d.descripcion,ls.descripcion,
           ls.cantidad,lc.tipoelemento,lc.unidad,lc.cantidad,ls.cantidad*lc.cantidad as total
      from Proyectp p
inner join Cliente c on p.codigocliente=c.codigo
inner join DesglSp d on p.anyo=d.anyo and p.numero=d.numeroproyecto
       and p.version=d.version
inner join LDesgLsp ls on d.anyo=ls.anyo and d.numeroproyecto=ls.numeroproyecto
       and d.version=ls.version and d.codigocapitulo=ls.codigocapitulo
inner join LDesgCom lc on ls.anyo=lc.anyo and ls.numeroproyecto=lc.numeroproyecto
       and ls.version=lc.version and ls.codigocapitulo=lc.codigocapitulo and ls.linea=lc.lineapartida
     where p.fecharealizacion="21.01.2016"
       and lc.tipoelemento="Operacion"
       and lc.unidad="Horas"

union all
    select 0,0,0,"","","","","",0,"",0,0,sum(ls.cantidad*lc.cantidad) as total
      from Proyectp p
inner join Cliente c on p.codigocliente=c.codigo
inner join DesglSp d on p.anyo=d.anyo and p.numero=d.numeroproyecto
       and p.version=d.version
inner join LDesgLsp ls on d.anyo=ls.anyo and d.numeroproyecto=ls.numeroproyecto
       and d.version=ls.version and d.codigocapitulo=ls.codigocapitulo
inner join LDesgCom lc on ls.anyo=lc.anyo and ls.numeroproyecto=lc.numeroproyecto
       and ls.version=lc.version and ls.codigocapitulo=lc.codigocapitulo and ls.linea=lc.lineapartida
     where p.fecharealizacion="21.01.2016"
       and lc.tipoelemento="Operacion"
       and lc.unidad="Horas"

Gracias

Casimiro Notevi 22-01-2016 21:34:35

¿Y el problema? :confused:

orodriguezca 22-01-2016 21:38:45

No logro entender del todo pero creo que lo que estás pidiendo es un Group By:

Código SQL [-]
    select p.anyo,p.numero,p.version,c.nombre,p.fecharealizacion,p.descripcion,d.descripcion,ls.descripcion,
           ls.cantidad,lc.tipoelemento,lc.unidad,lc.cantidad,ls.cantidad*lc.cantidad as total
      from Proyectp p
inner join Cliente c on p.codigocliente=c.codigo
inner join DesglSp d on p.anyo=d.anyo and p.numero=d.numeroproyecto
       and p.version=d.version
inner join LDesgLsp ls on d.anyo=ls.anyo and d.numeroproyecto=ls.numeroproyecto
       and d.version=ls.version and d.codigocapitulo=ls.codigocapitulo
inner join LDesgCom lc on ls.anyo=lc.anyo and ls.numeroproyecto=lc.numeroproyecto
       and ls.version=lc.version and ls.codigocapitulo=lc.codigocapitulo and ls.linea=lc.lineapartida
     where p.fecharealizacion="21.01.2016"
       and lc.tipoelemento="Operacion"
       and lc.unidad="Horas"

union all
    select 0,0,0,"","","","","",0,"",0,0,sum(ls.cantidad*lc.cantidad) as total
      from Proyectp p
inner join Cliente c on p.codigocliente=c.codigo
inner join DesglSp d on p.anyo=d.anyo and p.numero=d.numeroproyecto
       and p.version=d.version
inner join LDesgLsp ls on d.anyo=ls.anyo and d.numeroproyecto=ls.numeroproyecto
       and d.version=ls.version and d.codigocapitulo=ls.codigocapitulo
inner join LDesgCom lc on ls.anyo=lc.anyo and ls.numeroproyecto=lc.numeroproyecto
       and ls.version=lc.version and ls.codigocapitulo=lc.codigocapitulo and ls.linea=lc.lineapartida
     where p.fecharealizacion="21.01.2016"
       and lc.tipoelemento="Operacion"
       and lc.unidad="Horas"
Group by p.anyo,p.numero,p.version,c.nombre,p.fecharealizacion,p.descripcion,d.descripcion,ls.descripcion,
           ls.cantidad,lc.tipoelemento,lc.unidad,lc.cantidad

juanpy70 22-01-2016 21:42:30

Le reitero:

- Necesito generar la consulta (primera parte antes de Union all (OK))
- Necesito insertar al final de la cuadriculatura, una fila con el total (sum(ls.cantidad*lc.cantidad) as total) (segunda parte después de Union All (falla))

Gracias

Casimiro Notevi 22-01-2016 21:46:14

Cita:

Empezado por juanpy70 (Mensaje 501513)
Le reitero:
- Necesito generar la consulta (primera parte antes de Union all (OK))
- Necesito insertar al final de la cuadriculatura, una fila con el total (sum(ls.cantidad*lc.cantidad) as total) (segunda parte después de Union All (falla))

Puedes reiterar todo lo que quieras, pero no dices qué problema tienes, qué error da, qué quieres conseguir exactamente, no dices qué falla, no se entiende eso de "insertar al final de la cuadriculatura", etc. etc. etc.

orodriguezca 22-01-2016 22:07:49

Releyendo y tratando de entender:

1. Ok, el group by que sugerí previamente no va; en principio la consulta estaría bien (de acuerdo a lo que entiendo).
2. Como no nos dices en que forma falla (mensaje de error,datos errados, etc) me limito a indicar que en una unión SQL los tipos de datos de cada una de las columnas de las dos consultas tiene que ser consistentes; en particular verifica el tipo de datos de la columna p.fecharealizacion, quizas sea tipo Date y no char . Tal vez en ves de

Código SQL [-]
select 0,0,0,"","","","","",0,"",0,0,sum(ls.cantidad*lc.cantidad) as total

tengas que escribir algo como
Código SQL [-]
select 0,0,0,"","01.01.1900","","","",0,"",0,0,sum(ls.cantidad*lc.cantidad) as total

EDITO: También puede estar ocurriendo que en 0,0,0,""... Paradox este interpretando un punto decimal. Mejor escribir 0, 0, ', "", ...


La franja horaria es GMT +2. Ahora son las 10:21:51.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi