使用rownum始终获取非空值

o4tp2gmn  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(356)
select case when (CUST.ADDRESS_TYPE='OFFICE') then 
                 (Select MOBILE 
                  FROM cust_table CUST 
                  where CID = Deal.CID 
                  and ADDRESS_TYPE = 'CURRES' 
                  and rownum = 1)
       else 
                  CUST.MOBILE 
       end as MOBILE 
FROM cust_table CUST 
RIGHT OUTER JOIN (SELECT CID CID 
                         , WNAME
                         , APPLICANT_TYPE 
                  FROM deal_table ) DEAL 
      ON DEAL.CID = CUST.CID 
      AND APPLICANT_TYPE = 'P' 
      and mailing_add = 'true' 
WHERE WNAME='22135' 
and rownum = 1

移动#

无效的
647432923
或者

移动#

74238423
无效的
这个查询返回一个名为“mobile”的列,其中有两行,当我不使用时,其中一个条目总是空的 rownum = 1 最后,如果我 rownum = 1 最后,在某些情况下返回空值,在某些情况下返回非空值。如何使用rownum使查询始终返回非空值。

fd3cxomn

fd3cxomn1#

不要为此使用rownum。在运行查询之后,rownum将给出行的编号。使用一个正确定义的order by子句在末尾获取空值,并且只获取第一行。

<your query>
WHERE wname='22135' 
ORDER BY mobile NULLS LAST
FETCH FIRST 1 ROWS ONLY

相关问题