简单问题,改SQL语句

raymen 2001-12-04 03:59:00
这是我写的存储过程中的一部分,功能是当第一条SQL语句没有结果的话就执行第二句来补上一句差不多的,大家应该看得懂吧,请问有什么办法写成一句就行了?
select @v_year+"/01/01" as ymd," " as num,"上年结转" as bz ,0 as jcsl,0 as jcdj,0 as jcje ,
0 as ccsl,0 as ccdj,0 as ccje,qmsl,qmdj,qmje
from bj_endc
where allnum =@v_allnum and ym =@v_yyyymm
union
select @v_year+"/01/01" as ymd," " as num,"上年结转" as bz ,0 as jcsl,0 as jcdj,0 as jcje ,
0 as ccsl,0 as ccdj,0 as ccje,0 as qmsl,0 as qmdj,0 as qmje
from bj_endc
where not exists
(select " " as ymd," " as num,"上年结转" as bz ,0 as jcsl,0 as jcdj,0 as jcje ,
0 as ccsl,0 as ccdj,0 as ccje,qmsl,qmdj,qmje
from bj_endc
where allnum =@v_allnum and ym =@v_yyyymm)
...全文
144 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
raymen 2001-12-04
  • 打赏
  • 举报
回复
upupupup
raymen 2001-12-04
  • 打赏
  • 举报
回复
不是取值的问题,是当表中没有符合WHERE条件的时候是没有返回值的。
DECODE可能在SQL中用CASE也行吧
raymen 2001-12-04
  • 打赏
  • 举报
回复
不行啊,如果表中没有符合条件的就没有任何返回值
panther_totem 2001-12-04
  • 打赏
  • 举报
回复
如果是ORACLE我知道可以用
DECODE(TRIM(v_year || '/01/01'), '/01/01', ' ', TRIM(v_year || '/01/01')) as ymd
来解决,不知MS SQL有没有类似的函数.
mars_bolt 2001-12-04
  • 打赏
  • 举报
回复
select @v_year+"/01/01" as ymd," " as num,"上年结转" as bz ,0 as jcsl,0 as jcdj,0 as jcje ,
0 as ccsl,0 as ccdj,0 as ccje,isnull(qmsl,0),isnull(qmdj,0),isnull(qmje,0)
from bj_endc
where allnum =@v_allnum and ym =@v_yyyymm
这样行不行。好像是可以的
raymen 2001-12-04
  • 打赏
  • 举报
回复
不会吧,这个难道是最简单的了吗?
发帖
MS-SQL Server

3.4w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
帖子事件
创建了帖子
2001-12-04 03:59
社区公告
暂无公告