Advertisement
fabiobozzo

Riassortimenti LAC

Jun 15th, 2015
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 4.13 KB | None | 0 0
  1. SELECT
  2.                 v.nome_modello,
  3.                 v.codice_modello,
  4.                 v.lenti_confezione,
  5.                 v.um,
  6.                 SUM( CASE WHEN v.tipologia = 'S' THEN v.venduto ELSE 0 END ) AS venduto_sito,
  7.                 SUM( CASE WHEN v.tipologia = 'N' THEN v.venduto ELSE 0 END ) AS venduto_negozi,
  8.                 IFNULL(d.disponibili,0) AS disponibili,
  9.                 IFNULL(a.da_acquistare,0) AS da_acquistare,
  10.                 IFNULL(o.ordinati,0) AS ordinati  
  11.             FROM (
  12.  
  13.                 (SELECT
  14.                     lm.nome_modello,
  15.                     lm.codice_modello,
  16.                     lm.lenti_confezione,
  17.                     lm.um,
  18.                     SUM(lao.qta) AS venduto,
  19.                     'S' AS tipologia
  20.                 FROM
  21.                     lenses_archivio_clienti lac
  22.                     INNER JOIN lenses_archivio_ordini lao ON lao.clid = lac.clid
  23.                     INNER JOIN lenses_modelli lm ON lao.barcode = lm.barcode
  24.                 WHERE
  25.                     lm.id_produttore = <cfqueryparam cfsqltype="cf_sql_integer" VALUE="#idProduttore#" /> AND
  26.                     lac.data_ordine BETWEEN '#LSDateFormat(daData,'yyyy-mm-dd')# 00:00:00' AND '#LSDateFormat(aData,'yyyy-mm-dd')# 23:59:59'
  27.                 GROUP BY
  28.                     lm.codice_modello,
  29.                     lm.lenti_confezione,
  30.                     lm.um
  31.                 HAVING
  32.                     venduto > 0
  33.                 ORDER BY
  34.                     venduto DESC)
  35.  
  36.                 UNION ALL
  37.  
  38.                 (SELECT
  39.                     lm.nome_modello,
  40.                     lm.codice_modello,
  41.                     lm.lenti_confezione,
  42.                     lm.um,
  43.                     SUM(oi.qta_ordinata_fornitore) AS venduto,
  44.                     'N' AS tipologia
  45.                 FROM
  46.                     ordini_ingrosso oi
  47.                     INNER JOIN lenses_modelli lm ON oi.barcode = lm.barcode
  48.                 WHERE
  49.                     lm.id_produttore = <cfqueryparam cfsqltype="cf_sql_integer" VALUE="#idProduttore#" /> AND
  50.                     oi.data_ordine BETWEEN '#LSDateFormat(daData,'yyyy-mm-dd')# 00:00:00' AND '#LSDateFormat(aData,'yyyy-mm-dd')# 23:59:59'
  51.                 GROUP BY
  52.                     lm.codice_modello,
  53.                     lm.lenti_confezione,
  54.                     lm.um
  55.                 HAVING
  56.                     venduto > 0
  57.                 ORDER BY
  58.                     venduto DESC)
  59.  
  60.             ) AS v
  61.    
  62.             LEFT JOIN (
  63.                 SELECT
  64.                     lm.codice_modello,
  65.                     lm.lenti_confezione,
  66.                     lm.um,
  67.                     IFNULL(
  68.                         SUM(
  69.                             CASE WHEN (lmm.tipo_magazzino = 'PRENOTATO' OR lmm.tipo_magazzino = 'OTTICA')
  70.                             THEN (CASE WHEN lmm.tipo_magazzino = 'PRENOTATO' THEN -lmm.qta ELSE lmm.qta END)
  71.                             ELSE 0
  72.                             END
  73.                         ),
  74.                     0) AS disponibili
  75.                 FROM
  76.                     lenses_mag_movimenti_magazzino lmm
  77.                     LEFT JOIN lenses_modelli lm ON lm.barcode = lmm.barcode
  78.                 WHERE
  79.                     lm.id_produttore = <cfqueryparam cfsqltype="cf_sql_integer" VALUE="#idProduttore#" />
  80.                     AND lm.barcode IN (<cfqueryparam list="true" VALUE="#valueList(articoliVenduti.barcode)#" />)
  81.                 GROUP BY
  82.                     lm.codice_modello,
  83.                     lm.lenti_confezione,
  84.                     lm.um
  85.                 HAVING
  86.                     disponibili > 0
  87.             ) AS d ON d.codice_modello = v.codice_modello AND d.lenti_confezione = v.lenti_confezione AND d.um = v.um
  88.  
  89.             LEFT JOIN (
  90.                 SELECT
  91.                     lm.codice_modello,
  92.                     lm.lenti_confezione,
  93.                     lm.um,
  94.                     IFNULL(SUM(lmm.qta),0) AS da_acquistare
  95.                 FROM
  96.                     lenses_mag_movimenti_magazzino lmm
  97.                     LEFT JOIN lenses_modelli lm ON lm.barcode = lmm.barcode
  98.                 WHERE
  99.                     lmm.tipo_magazzino = 'ACQUISTA'
  100.                     AND lm.id_produttore = <cfqueryparam cfsqltype="cf_sql_integer" VALUE="#idProduttore#" />
  101.                     AND lm.barcode IN (<cfqueryparam list="true" VALUE="#valueList(articoliVenduti.barcode)#" />)
  102.                 GROUP BY
  103.                     lm.codice_modello,
  104.                     lm.lenti_confezione,
  105.                     lm.um
  106.             ) AS a ON a.codice_modello = v.codice_modello AND a.lenti_confezione = v.lenti_confezione AND a.um = v.um
  107.  
  108.             LEFT JOIN (
  109.                 SELECT
  110.                     lm.codice_modello,
  111.                     lm.lenti_confezione,
  112.                     lm.um,
  113.                     IFNULL(SUM(lof.qta_ordinata),0) AS ordinati
  114.                 FROM
  115.                     lenses_ordini_al_fornitore lof
  116.                     LEFT JOIN lenses_modelli lm ON lm.barcode = lof.barcode
  117.                 WHERE
  118.                     lm.id_produttore = <cfqueryparam cfsqltype="cf_sql_integer" VALUE="#idProduttore#" />
  119.                     AND lm.barcode IN (<cfqueryparam list="true" VALUE="#valueList(articoliVenduti.barcode)#" />)
  120.                     AND lof.qta_consegnata  = 0
  121.                     AND lof.ana_negozi_dest = 1
  122.                 GROUP BY
  123.                     lm.codice_modello,
  124.                     lm.lenti_confezione,
  125.                     lm.um
  126.             ) AS o ON o.codice_modello = v.codice_modello AND o.lenti_confezione = v.lenti_confezione AND o.um = v.um
  127.  
  128.             GROUP BY
  129.                 v.codice_modello,
  130.                 v.lenti_confezione,
  131.                 v.um
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement