首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

好手帮看看-为什么这个CASE WHEN无较

2013-11-04 
高手帮看看-----------为什么这个CASE WHEN无较?本帖最后由 cowbobe 于 2013-10-28 11:57:52 编辑很奇怪的

高手帮看看-----------为什么这个CASE WHEN无较?
本帖最后由 cowbobe 于 2013-10-28 11:57:52 编辑 很奇怪的问题,
这个代码在家里的SQL2000上执行可以,
但在公司的电脑上SQL2000执行就有问题,
主要是Case When后面的Else 无效,补丁SP4也打了,还是一样..

数据是一样的.
为什么在家里的电脑上,当ELSE时,是显示"未执行",而公司的电脑上就不显示,数据是有的,但
只显示<Null>.

怎么改啊?高人帮看下,什么问题..


select AppNo,ClientName,
(select case when AppNo<>'' then '已执行' else '未执行' end from OPA where appno=apply.appno) as '流程A',
(select case when AppNo<>'' then '已执行' else '未执行' end from OPB where appno=apply.appno) as '流程B'
 from apply





[解决办法]
试试:
select?AppNo,ClientName,
(select?case?when?isnull(AppNo,'')<>''?then?'已执行'?else?'未执行'?end?from?OPA?where?appno=apply.appno)?as?'流程A',
(select?case?when?isnull(AppNo,'')<>''?then?'已执行'?else?'未执行'?end?from?OPB?where?appno=apply.appno)?as?'流程B'
?from?apply

[解决办法]


select AppNo,ClientName,
(select case when  AppNo  isnull then '已执行' else '未执行' end from OPA where appno=apply.appno) as '流程A',
(select case when AppNo isnull  then '已执行' else '未执行' end from OPB where appno=apply.appno) as '流程B'
 from apply


is null 和<>'' 是有很大的区别的,你用这两种情况多试下结果就会发现的 
[解决办法]

select a.AppNo,a.ClientName,case when ISNULL(b.appno,'')<>'' then '已执行' else '未执行' end as '流程A',
                            case when ISNULL(c.appno,'')<>'' then '已执行' else '未执行' end as '流程B',
 from apply a left join opa b on a.appno=b.appno
              left join opb c on a.appno=c.appno 

[解决办法]
修正楼上最后多了个,号

select a.AppNo,a.ClientName,case when ISNULL(b.appno,'')<>'' then '已执行' else '未执行' end as '流程A',
                            case when ISNULL(c.appno,'')<>'' then '已执行' else '未执行' end as '流程B'
 from apply a left join opa b on a.appno=b.appno
              left join opb c on a.appno=c.appno 

[解决办法]
改成这样试试看:


select AppNo,ClientName,
(select case when isnull(AppNo,'')<>'' then '已执行' else '未执行' end from OPA where appno=apply.appno) as '流程A',
(select case when isnull(AppNo,'')<>'' then '已执行' else '未执行' end from OPB where appno=apply.appno) as '流程B'
 from apply

[解决办法]

select AppNo,ClientName,
(select case when AppNo<>'' then '已执行' else '未执行' end from OPA where appno=apply.appno) as '流程A',
(select case when AppNo<>'' then '已执行' else '未执行' end from OPB where appno=apply.appno) as '流程B'
 from apply

--你的NULL值没处理

热点排行