代码之家  ›  专栏  ›  技术社区  ›  mikrimouse

在查询中使用具有三个值的参数获得不同的结果

  •  -1
  • mikrimouse  · 技术社区  · 8 年前

    和zs。水=nvl(:p\u 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 是带值的参数 0,1 2

    1 回复  |  直到 8 年前
        1
  •  1
  •   XING    8 年前

    但是如果我选择0,我想得到1和2的组合。我该怎么做

    CASE

    使用此选项:

         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连接。