Advertisement
skuda

query 1 deleted some views

Jun 5th, 2014
358
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. SELECT mo.referencia,
  2.        ent.unidades AS entrada,
  3.        ven.unidades AS vendidas,
  4.        taprov.precio
  5.  
  6. FROM modelo AS mo
  7.  
  8.    JOIN (SELECT mo.modelo_id AS id_modelo,
  9.                 SUM(lin.unidades_reales)::INT AS unidades,
  10.                 MIN(cab.time_stamp_recepcion)::DATE AS min_fecha
  11.  
  12.          FROM modelo AS mo
  13.             JOIN articulo AS art ON art.id_modelo = mo.modelo_id
  14.             JOIN albaran_entrada_linea AS lin ON lin.id_articulo = art.articulo_id
  15.             JOIN albaran_entrada_cabecera AS cab ON cab.albaran_id = lin.id_albaran
  16.  
  17.          WHERE cab.id_almacen_destino = 109
  18.  
  19.          GROUP BY mo.modelo_id
  20.  
  21.          HAVING MIN(cab.time_stamp_recepcion)::DATE = (CURRENT_DATE - INTERVAL '30 days')::DATE ) AS ent ON ent.id_modelo = mo.modelo_id
  22.                  
  23.    JOIN (SELECT mo.modelo_id AS id_modelo,
  24.                 (CASE
  25.                    WHEN SUM(tic.unidades) > 0
  26.                       THEN  SUM(tic.unidades)
  27.                    ELSE 0
  28.                 END
  29.                 +
  30.                 CASE
  31.                    WHEN SUM(res.unidades) > 0
  32.                       THEN SUM(res.unidades)
  33.                    ELSE 0
  34.                 END)::int AS unidades
  35.          FROM modelo AS mo
  36.             JOIN articulo AS art ON art.id_modelo = mo.modelo_id
  37.  
  38.             LEFT JOIN (SELECT lin.id_articulo,
  39.                               SUM(lin.unidades) AS unidades
  40.                        FROM t109.ticket_cabecera AS cab
  41.                           JOIN t109.ticket_linea AS lin ON lin.id_ticket = cab.ticket_id
  42.                        GROUP BY lin.id_articulo) AS tic ON tic.id_articulo = art.articulo_id
  43.  
  44.             LEFT JOIN (SELECT lin.id_articulo,
  45.                               SUM(lin.unidades) AS unidades
  46.                        FROM t109.reserva_cabecera AS cab
  47.                           JOIN t109.reserva_linea AS lin ON lin.id_reserva = cab.reserva_id
  48.                        WHERE cab.recogido = TRUE
  49.                        GROUP BY lin.id_articulo) AS res ON res.id_articulo = art.articulo_id
  50.  
  51.        GROUP BY mo.modelo_id) AS ven ON ven.id_modelo = mo.modelo_id
  52.          
  53.    JOIN tarifa_proveedor_modelo_precio AS taprov ON taprov.id_modelo = mo.modelo_id
  54.                                                 AND taprov.id_tarifa = 3
  55.  
  56.    /* with this join it works much faster
  57.    JOIN tarifa_modelo_precio AS taprov ON taprov.id_modelo = mo.modelo_id
  58.                                       AND taprov.id_tarifa = 3
  59.    */
  60.  
  61. WHERE mo.id_seccion <> 4
  62.   AND (ent.unidades <> 0 OR ven.unidades <> 0)
  63.  
  64. ORDER BY referencia;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement