Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   consulta SQL (https://www.clubdelphi.com/foros/showthread.php?t=8915)

Igna 06-04-2004 12:18:27

consulta SQL
 
Hola.

No se si lo que intento se puede hacer (a mi no se me ocurre como), espero que a alguien se le ocurra algo.

Tengo dos tablas de la siguiente forma (en interbase):

Materiales
----------
Ndoc Integer
Clave Integer
Referencia Varchar
Concepto Varchar
Importe Numeric (9,2)
.....

Salidas
------
Clave Integer ("enganchada" con materiales.clave)
Cantidad Integer
Factura Varchar
....

lo que quiero hacer, es sacar los datos de una factura determinada. El problema es que en la tabla salidas pueden haber dos registros con la misma clave y la misma factura. Lo que quiero es que me salgan agrupados, y sume las cantidades. A lo máximo que he llegado es a:

select s.clave, sum(s.cantidad) as cant, avg(m.ndoc) as ndoc,
avg(m.importe) as importe, avg(m.importe)*sum(s.cantidad) as total
from salidas s
inner join materiales m on m.clave=s.clave
group by s.clave having factura='numero_factura'


El problema es que no puedo sacar la referencia y el concepto, ya que son varchar, y no puedo utlizar la función AVG.

Bueno, espero haberme explicado bien. Gracias de antemano, y un saludo.

cahp 06-04-2004 13:08:12

Mira a ver con:

Código:

Select materiales.referencia, materiales.concepto,
sum(salidas.cantidad) as cant, sum(salidas.importe * salidas.cantidad) as total
from salidas, materiales
where salidas.factura = 'numero_factura'
and salidas.clave = materiales.clave
gruop by materiales.referencia, materiales.concepto

Si no he entendido mal la pregunta, con esto lo tienes.

Saludos.

Igna 06-04-2004 13:22:30

Gracias por la respuesta.

Lo había solucionado de otra forma (ahora iba a poner como), pero tu solución, desde luego, es mucho más elegante y sencilla.

Yo había creado una vista más o menos como esta:

create view prueba (clave, factura, cantidad) as
select clave, factura, sum(cantidad) as cant from salidas
group by clave, factura


después, simplemente ejecutando el siguiente sql, me daba la solución que quería (creo):

select p.*, m.referencia, m.concepto, m.ndoc, m.importe,
m.importe*p.cantidad as total from prueba p
inner join materiales m on m.clave=p.clave
where p.factura='numero_factura'


De todas formas, creo que tu solución es mucho más sencilla que la mía.

Gracias de nuevo, y un saludo.


La franja horaria es GMT +2. Ahora son las 07:06:17.

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