2017-10-06 35 views
-1

我已選擇具有3個值0,1,2的p_water,並且如果我選擇1,2我將從表中獲得場水爲1或2的結果,但是如果我選擇0我想獲得1和2的組合。我將如何做? AND zs.water = nvl(:p_water,zs.water)這無法幫助我獲得0值。使用具有三個值的參數在查詢中獲得不同結果

感謝

SELECT rua.DATUM_DOKUMENTA DATUM_DOKUMENTA, 
     rua.VRSTA_promjene VRSTA_promjene, 
     COUNT (*) broj_racuna, 
     SUM (NVL (rua.duguje, 0)) UKUPNO_BLAGAJNA, 
     ,zs.vodovod 
    FROM nve_racuni_uplate rua, nve_potrosaci ptr ,nve_zone_snabdjevanja zs,nve_vodomjerna_mjesta vm 
    WHERE  rua.RADNA_GODINA = :P_GODINA 
     AND ((PTR.VODOMJERNO_MJESTO = VM.SIFRA AND VM.ZBIRNI='N') or (PTR.VODOMJERNO_MJESTO = VM.SIFRA_ZBIRNOG)) 
     AND zs.vodovod = nvl(:p_vodovod,zs.vodovod) 
     AND ( (:p_vrsta IS NULL AND rua.vrsta_promjene IN ('1', '2')) 
       OR (:p_vrsta IS NOT NULL AND rua.vrsta_promjene = :p_vrsta)) 

GROUP BY rua.DATUM_DOKUMENTA, rua.VRSTA_promjene,zs.vodovod 
ORDER BY rua.DATUM_DOKUMENTA, rua.VRSTA_promjene,zs.vodovod 

p_vodovod是parametar與價值0,1 2

+1

發佈您的查詢。你可能需要做一些像'AND zs.water =情況下,當NVL(:p_water,zs.water)在(1,2) 然後 其他 結束;' – XING

+0

我張貼查詢.... – mikrimouse

回答

1

,但如果讓我選擇0我想結合的1和2,我會怎麼做呢

Uuse CASE聲明爲evalaution。

使用此:

 SELECT rua.DATUM_DOKUMENTA DATUM_DOKUMENTA, 
     rua.VRSTA_promjene VRSTA_promjene, 
     COUNT (*) broj_racuna, 
     SUM (NVL (rua.duguje, 0)) UKUPNO_BLAGAJNA, 
     zs.vodovod 
    FROM nve_racuni_uplate rua, 
     nve_potrosaci ptr, 
     nve_zone_snabdjevanja zs, 
     nve_vodomjerna_mjesta vm 
    WHERE  rua.RADNA_GODINA = :P_GODINA 
     AND ( (PTR.VODOMJERNO_MJESTO = VM.SIFRA AND VM.ZBIRNI = 'N') 
       OR (PTR.VODOMJERNO_MJESTO = VM.SIFRA_ZBIRNOG)) 
     AND zs.vodovod IN (CASE 
           WHEN (NVL (:p_vodovod, zs.vodovod)) = 1 
           THEN 1 
           WHEN (NVL (:p_vodovod, zs.vodovod)) = 2 
           THEN 2 
           ELSE 
           zs.vodovod 
          END) 
     AND ( (:p_vrsta IS NULL AND rua.vrsta_promjene IN ('1', '2')) 
       OR (:p_vrsta IS NOT NULL AND rua.vrsta_promjene = :p_vrsta)) 
GROUP BY rua.DATUM_DOKUMENTA, rua.VRSTA_promjene, zs.vodovod 
ORDER BY rua.DATUM_DOKUMENTA, rua.VRSTA_promjene, zs.vodovod 

還要注意的是,你不應該使用舊的SQL連接技術。您必須使用ANSI sql連接。

+0

在(1,2)中當nvl(:p_vodovod,zs.vodovod)時缺少右括號然後(1 ==,2 – mikrimouse

+0

現在嘗試。它應該工作 – XING

+0

同樣的錯誤..... – mikrimouse

相關問題