Analiza, która przeszukuje oferty od danych hurtowni i szuka leków po nazwie międzynarodowej.
select o.iddost,d.nazwa,o.NRTOW,o.nazwa,o.cenaz,o.bloz07 from ofer o
LEFT JOIN dost d ON o.iddost = d.id AND o.idfirm = d.idfirm
LEFT JOIN bloz b ON o.BLOZ07 = b.KOD07
where upper(b.NZWMI) like upper('%' || :FRNAZWA || '%') and o.wsost=1
and (o.iddost='1' or o.iddost='267' or o.iddost='196' or o.iddost='306' or o.iddost='240') /*Karty dostawców w których ma szukać*/ ORDER BY o.CENAZ,o.BLOZ07
Zapytanie, które sprawdza sprzedaż marychy oraz dodatkowo wyświetla dane przechodni i lekarzy, którzy wystawiają tego typu recepty.
select s.id, s.datsp as data_sp, s.nrkln, s.nrrec, s.nrorc, t.nrtow, t.nazwa, t.jdnml, S.KODR2 as kod_przechod, S.KODR3 as kod_lekaza ,le.nazwu as nazwa_lekaza, w.nazwu as nazwa_osrodka, w.kdpcz as kod_pocz, w.miast as miasto, w.ulica as Ulica, w.telef as telefon
from sprz s inner join leka le on le.id=s.idleka and s.idfirm=le.idfirm inner join swdc w on w.id=s.idswdc and w.idfirm=s.idfirm inner join towr t on s.idtowr=t.id and s.idfirm=t.idfirm inner join kach n on s.idkach=n.id inner join dokf d on s.iddokf=d.id and s.idfirm=d.idfirm
inner join dedf f on d.iddedf=f.id and d.idfirm=f.idfirm left outer join sprc c on c.idfirm = s.idfirm and c.id = s.idsprc inner join leki l on t.id=l.idtowr and t.idfirm=l.idfirm where s.idfirm=879605 and s.typsp not in (24, 25) and not l.ostrz like '___0%'
and s.wskus=0 and s.bufor=0 and s.id<>0 and S.KODR2 is not null and t.nrtow <> 0
and s.id_porz= 1
order by s.idfirm desc, s.id_porz desc, s.datsp desc, s.nrkln desc, s.nrrec desc, s.pozrp desc, s.pozrc desc
select * from swdc where idfirm = 887681 /*Numer apteki*/ and id > 0 AND (WSKUS IS NULL OR WSKUS = 0) order by nazwu
select * from leka where idfirm = 887681 /*Numer apteki*/ and id > 0 AND WSKUS = 0 order by nazwu
s.idlek = l.id and s.idfirm = l.idfirm z sprz
s.idkach = k.id and s.idfirm = k.idfirm
join leka le on le.id=s.idlek and s.idfirm=le.idfirm join swdc w on w.id=w.idkach and w.idfirm=s.idfirm
Analizuje leki, które są dostępne w aptece, z możliwością zwrotu do hurtowni, jeśli zostały kupione drożej niż są dostępne obecnie. (W zapytaniu należy zmienić "kzakiddost" na zgodne z daną apteką oraz dostosować liczbę dni do zwrotu zgodnie z danym hurtem.)
SELECT
numertowaru as "Numer Towaru",
nazwatowaru as "Nazwa Towaru",
bloz as "BLOZ",
kzakilakt1 as "Sumaryczne stany",
stany as "Aktualne stany z danej dostawy",
norma "Norma",
maksymalna as "Cena detaliczna",
zakup as "Cena zakupu netto",
mincena as "Cena minimalna",
zakup-mincena as "Roznica cen",
datazak as "Data Zakupu",
zostalo as "Ile dni zostalo",
hurtownia as "Hurtownia",
kzakiddost as "Numer Hurtowni",
faktura as "Numer Faktury"
FROM
( (SELECT
twnridtowr as numertowr,
TOWR.nazwa as nazwatowaru,
TOWR.bloz07 as bloz,
kzakilakt as stany,
AVG(COALESCE(twnrnorma, 0)) as norma,
cena as maksymalna,
cenazak as zakup,
TOWR.nrtow as numertowaru,
datzak as datazak,
case when kzakiddost=107 then 90-round(CURRENT_TIMESTAMP - datzak,0)
when kzakiddost=170 then 60-round(CURRENT_TIMESTAMP - datzak,0)
when kzakiddost=1 then 10-round(CURRENT_TIMESTAMP - datzak,0)
when kzakiddost=20 then 7-round(CURRENT_TIMESTAMP - datzak,0)
when kzakiddost=336 then 7-round(CURRENT_TIMESTAMP - datzak,0)
end as zostalo,
hurtownia,
kzakiddost,
faktura,
kzakidtowr1
FROM
(SELECT
Twnr.idtowr as twnridtowr,
kzakilakt,
kzakilows,
cena,
cenazak,
datzak,
kzakidtowr1,
TWNR.norma as twnrnorma,
dost.nazwa as hurtownia,
dokf.symzr as faktura,
kzakiddost
FROM
(SELECT
KZAK.idtowr as kzakidtowr1,
KZAK.ilakt as kzakilakt,
KZAK.ilows as kzakilows,
KZAK.CSPBR as cena,
kzak.CZLNT as cenazak,
KZAK.datzk as datzak,
kzak.iddost as kzakiddost,
kzak.iddokf as kzakiddokf
FROM KZAK where kzak.ilakt>=1 and (kzak.ilows =0 or kzak.ilows is null))
INNER JOIN dokf on kzakiddokf = dokf.id
INNER join DOST on kzakiddost = dost.id
INNER JOIN TWNR
ON TWNR.idtowr=kzakidtowr1)
INNER JOIN TOWR
ON TOWR.id=twnridtowr
GROUP BY twnridtowr, TOWR.nazwa, TOWR.bloz07, TOWR.kodean, TOWR.nrtow, hurtownia, kzakilakt, faktura, cena, cenazak, datzak, kzakidtowr1, kzakiddost)
INNER JOIN
(SELECT
KZAK.idtowr as idtowr,
SUM(KZAK.ilakt) as kzakilakt1
from kzak group by idtowr) on idtowr = kzakidtowr1
left JOIN
(SELECT
KZAK.idtowr as idtowr2,
MIN(KZAK.CZLNT) as mincena
from kzak where kzak.ilakt>0 and kzak.datzk> (CURRENT_TIMESTAMP - 90) group by idtowr) on idtowr = idtowr2
)
where datazak between :DATAOD and :DATADO and zakup - mincena >2 and HURTOWNIA not like '%Apteka%'
and ((kzakiddost=107 and datazak >= (CURRENT_TIMESTAMP-90))
or (kzakiddost=170 and datazak >= (CURRENT_TIMESTAMP-90))
or (kzakiddost=1 and datazak >= (CURRENT_TIMESTAMP-10))
or (kzakiddost=20 and datazak >= (CURRENT_TIMESTAMP-7))
or (kzakiddost=336 and datazak >= (CURRENT_TIMESTAMP-7)))