CREATE VIEW filfmsetup AS SELECT movimag.codice, movimag.data, movimag.ora, movimag.codoper, movimag.codterm, movimag.codcau, movimag.prelievo, movimag.deposito, movimag.cariniz, movimag.codubi, movimag.codcom, movimag.codlot, movimag.qta, movimag.um, movimag.nc, movimag.qtasn, movimag.codlotpf, movimag.sec, movimag.codsped, movimag.impegno, movimag.tm, movimag.tmdiff, movimag.caudef, movimag.caufm, movimag.codmp, movimag.codagg FROM (movimag LEFT JOIN ( SELECT movimag_1.codubi FROM (movimag movimag_1 JOIN ( SELECT movimag_2.codubi, max(movimag_2.codice) AS cod FROM movimag movimag_2 WHERE (((movimag_2.codcau)::text = 'INFM'::text) OR ((movimag_2.codcau)::text = 'FIFM'::text)) GROUP BY movimag_2.codubi) q ON ((q.cod = movimag_1.codice))) WHERE ((movimag_1.caufm)::text = 'setup'::text)) q1 ON (((q1.codubi)::text = (movimag.codubi)::text))) WHERE (q1.codubi IS NULL) ORDER BY movimag.codice DESC; ALTER TABLE public.filfmsetup OWNER TO postgres; COMMENT ON VIEW filfmsetup IS 'Estrae i movimenti di magazzino per tutte le location che non hanno avuto l''ultimo fermo come setup'; CREATE VIEW filfmsetup1 AS SELECT movimag.* FROM movimag INNER JOIN ( SELECT (case when c1 IS NULL then 0 else (case when c2 IS NULL then 1 else (case when c1>c2 then 1 else 0 end) end) end) AS nosetup, q1.codubi FROM ( SELECT max(tm) AS c1, codubi FROM movimag WHERE codcau='INFM' AND caufm<>'setup' GROUP BY codubi) AS q1 LEFT JOIN ( SELECT max(tm) AS c2, codubi FROM movimag WHERE codcau='INFM' AND caufm='setup' GROUP BY codubi) AS q2 ON q1.codubi=q2.codubi) AS q3 ON q3.codubi=movimag.codubi WHERE movimag.codcau='PREL' AND q3.nosetup='1'; ALTER TABLE public.filfmsetup1 OWNER TO postgres; COMMENT ON VIEW filfmsetup1 IS 'Nuova vista che estrae i movimenti di magazzino per tutte le location che non hanno avuto l''ultimo fermo come setup';