Predmet:Re: Pomoć oko upita
   
skolicina ti je ono sto racunas sa Sum(d.kolicina_promener) OVER (PARTITION BY d.id_dokumenta), pa bi trebalo staviti u WHERE nesto ovako:
Sum(d.kolicina_promener) OVER (PARTITION BY d.id_dokumenta) >0 OR Sum(d.kolicina_promener) OVER (PARTITION BY d.id_dokumenta) IS NOT NULL
Medjutim, window funkcije (none sa OVER()) ne mogu da se stave u WHERE, sintaksa za T-SQL to ne dozvoljabva. Za ono sto tebi treba potrebna su dva koraka
- prvo izracunas skolicina (sto si i uradio)
- u sledecem koraku izvuces rekorde koji ti trebaju
Ovako nekako:
Citat:WITH Proracun As
(
SELECT
    m.id_dokumenta
    , m.id_vd
    , Sum(d.kolicina_promener) OVER (PARTITION BY d.id_dokumenta) AS skolicina
    , m.poslovni_partner#_kd
    , m.poslovni_partner#_pk
    , m.organizaciona_jedinica#_real
    , m.poslovni_partner#_ot
    , m.godina
    , m.datum_isporuke
    , m.id_relacije
    , p.id_dokumenta
    , p.id_fin_dokumenta
FROM  uz_DokuMent m
LEFT OUTER JOIN Prod_fakturIsAn_DokuMent p ON m.id_dokumenta = p.id_dokumenta)
LEFT OUTER JOIN uz_DokuMent_stavka d ON d.id_dokumenta = m.id_dokumenta
WHERE           m.godina = '2012'
                        AND m.id_vd IN ( 19, 354 )
                        AND m.organizaciona_jedinica#_real = '501'
                        AND p.id_fin_dokumenta IS NULL
                        AND m.poslovni_partner#_kd <> '14690'
                        AND m.broj_poslednje_stavke IS NOT NULL
                        AND m.datum_isporuke BETWEEN To_date(:p_datum_od, 'dd.mm.rrrr') AND To_date(:p_datum_do, 'dd.mm.rrrr')
--ORDER           BY m.datum_isporuke ASC
)
SELECT  
*
FROM Proracun
WHERE skolicina IS NOT NULL OR skolicina > 0
ORDER           BY m.datum_isporuke ASC
;