Tema: Consulta SQL
Ver Mensaje Individual
  #4  
Antiguo 16-05-2018
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Creo que esta es una versión mas simple y por lo tanto mas "entendible"
  1. Se recorren los registros agrupados por albaran, fecha y articulo.
  2. Dentro de cada registro que se devuelve, se realizan dos subselect que suma de esa misma tabla los registros que correspondan con ese alabran, fecha y articulo.
  3. Un subselect filtra los que el precio son iguales a 0.
  4. El otro subselect filtra los que el precio son distintos de 0.
  5. A cada uno de estas sumas se les asinga un nombre (cant_pr y cant_sin).
  6. Opcionalmente se podría ordenar, pero el group by ya lo hace...

Código SQL [-]
select
       /* Campos agrupados */
       v.albaran, v.fecha, v.articulo,
       /* Suma cantidades con precio 0 dentro del albaran-fecha-articulo */
       (select sum(cantidad)
        from ventaslineas
        where
        albaran = v.albaran and
        fecha = v.fecha and
        articulo = v.articulo and
        precio <> 0) as cant_pr,
       /* Suma cantidades con precio distinto de 0 dentro del albaran-fecha-articulo */
       (select sum(cantidad)
        from ventaslineas
        where
        albaran = v.albaran and
        fecha = v.fecha and
        articulo = v.articulo and
        precio = 0) as cant_sin
from ventaslineas v
group by v.albaran, v.fecha, v.articulo
Responder Con Cita