PDA

Ver la Versión Completa : Sql Paradox 7, insertar una fila con total


juanpy70
22-01-2016, 18:36:20
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.

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
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)


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:


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
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


select 0,0,0,"","","","","",0,"",0,0,sum(ls.cantidad*lc.cantidad) as total


tengas que escribir algo como

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, ', "", ...