
Bas si se potrudio da pokupis sve slucajeve preklapanja. I Datediff je bolje nego Date1-Date2, trebalo bi da se i moji kveriji promene, ali me mrzi.
Malo sam formatirao kod da se bolje vidi sta se desava:
Code:
SELECT ukupno,
sifra_drzava,
naziv
FROM (SELECT (Sum(aa) + Sum(cc) + Sum(dd) + Sum(ee)) AS ukupno,
sifra_drzava,
naziv
FROM (SELECT (Iif(aaa > 0,aaa,0)) AS aa,
(Iif(ccc > 0,ccc,0)) AS cc,
(Iif(ddd > 0,ddd,0)) AS dd,
(Iif(eee > 0,eee,0)) AS ee,
sifra_drzava,
naziv
FROM (SELECT Sum(a) AS aaa,
Sum(c) AS ccc,
Sum(d) AS ddd,
Sum(e) AS eee,
sifra_drzava,
naziv
FROM (SELECT sifra_drzava,
naziv,
(Iif((datum_prijave >= :datumod
AND datum_odjave < :datumdo),Datediff("d",datum_prijave,datum_odjave),
0)) AS a,
(Iif((datum_prijave < :datumod
AND datum_odjave <= :datumdo),Datediff("d",:datumod,datum_odjave),
0)) AS c,
(Iif((datum_prijave <= :datumod
AND datum_odjave >= :datumdo),Datediff("d",:datumod,:datumdo),
0)) AS d,
(Iif((datum_prijave > :datumod
AND datum_odjave = :datumdo),Datediff("d",datum_prijave,:datumdo),
0)) AS e
FROM tblgosti AS c,
tbldrzave AS d
WHERE c.sifra_drzava = d.sifra)
GROUP BY sifra_drzava,
naziv))
GROUP BY sifra_drzava,
naziv)
WHERE ukupno <> 0
SELECT ukupno,
sifra_drzava,
naziv
FROM (SELECT (Sum(aa) + Sum(cc) + Sum(dd) + Sum(ee)) AS ukupno,
sifra_drzava,
naziv
FROM (SELECT (Iif(aaa > 0,aaa,0)) AS aa,
(Iif(ccc > 0,ccc,0)) AS cc,
(Iif(ddd > 0,ddd,0)) AS dd,
(Iif(eee > 0,eee,0)) AS ee,
sifra_drzava,
naziv
FROM (SELECT Sum(a) AS aaa,
Sum(c) AS ccc,
Sum(d) AS ddd,
Sum(e) AS eee,
sifra_drzava,
naziv
FROM (SELECT sifra_drzava,
naziv,
(Iif((datum_prijave >= :datumod
AND datum_odjave < :datumdo),Datediff("d",datum_prijave,datum_odjave),
0)) AS a,
(Iif((datum_prijave < :datumod
AND datum_odjave <= :datumdo),Datediff("d",:datumod,datum_odjave),
0)) AS c,
(Iif((datum_prijave <= :datumod
AND datum_odjave >= :datumdo),Datediff("d",:datumod,:datumdo),
0)) AS d,
(Iif((datum_prijave > :datumod
AND datum_odjave = :datumdo),Datediff("d",datum_prijave,:datumdo),
0)) AS e
FROM tblgosti AS c,
tbldrzave AS d
WHERE c.sifra_drzava = d.sifra)
GROUP BY sifra_drzava,
naziv))
GROUP BY sifra_drzava,
naziv)
WHERE ukupno <> 0
I zakacio sam korektnu verziju resenja sa koriscenjem tabele datuma, mislim da je prva otisla s greskom (+1 dan)
