教程学院
图像设计 多媒体类 机械制图 办公软件 操作系统 系统编程 网站编程 网页制作 数据库类 网络路由 网络工程 网络安全 考试认证
firefox火狐浏览器下载
酷网学院
CAD
AutoCad Cam350 ProEngineer GCcam MATLAB Unigraphics SolidWorks CAXA Solid3000 Cimatron EdgeCAM
系统
安全 防火墙 病毒 WinXP Win2003 Vista
数据库
编程
网络
精彩图库
  当前位置: 库库中文网 · 数据库类教程 · MSSQL教程 · MsSql综合技巧

sql中case when地嵌套地运用?

学院最新推荐文章
教程推荐
『sql中case when地嵌套地运用?』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2008-9-26 
C# code

 set s.SIncease=case

                      --积分大于1000就是星级.所以不用判断是否是星级

                   when m.Mem_Type<> N'一般VIP会员' then s.SMark*0.3

                   else case 

                          when s.SMark>4000 then 

                               s.SMark*0.3

                        when s.SMark>3000 then 

                           [color=#FF0000]  ( case when s.Mark>3000

                                   then

                                       (4000-s.Mark)*28%+(s.Mark-(4000-s.Mark))*30%

                                   when s.Mark>2000

                                    then 

                                       (3000-s.Mark)*25%+1000*28%+(s.Mark-(3000-s.Mark)-1000)*30%  

                                   when s.Mark>1000

                                     then 

                                       (2000-s.Mark)*23%+1000*25%+1000*28%+(s.Mark-(2000-s.Mark)-2000)*30%

                                   else s.Mark>0

                                        

                                (1000-s.Mark)*20%+1000*23%+1000*25%+(s.Mark-(1000-s.Mark)-2000)*28%

                                     end) [/color]                 

                            when s.SMark>2000 then 

                               1000*0.2+1000*0.23+(s.SMark-2000)*0.25  

                          when s.SMark>1000 then

                               (s.SMark-1000)*.023+1000*0.2

                          else  s.SMark*0.2

                       end

                  end


红色的部分
一添加就出错换成'1000*0.2+1000*0.23+(s.SMark-2000)*0.25'这种就冒的问题

这个问题第1个回答:
25% - > 0.25
这个问题第2个回答:
SQL code

 ( case when s.Mark>3000

                                   then

                                       (4000-s.Mark)*28%+(s.Mark-(4000-s.Mark))*30%

                                   when s.Mark>2000

                                    then 

                                       (3000-s.Mark)*25%+1000*28%+(s.Mark-(3000-s.Mark)-1000)*30%  

                                   when s.Mark>1000

                                     then 

                                       (2000-s.Mark)*23%+1000*25%+1000*28%+(s.Mark-(2000-s.Mark)-2000)*30%

                                   else s.Mark>0

                                        

                                (1000-s.Mark)*20%+1000*23%+1000*25%+(s.Mark-(1000-s.Mark)-2000)*28%

                                     end)         


这个部分换成 '1000*0.2+1000*0.23+(s.SMark-2000)*0.25'
这个问题第3个回答:
else就不用s.Mark>0

这个问题第4个回答:
happyfly跟我搞个case when的嵌套语法
谢啦
查了半天
搞不清楚
这个问题第5个回答:
这些嵌套一般只有搞清楚了规则才能搞得懂,光看代码,累哟.
这个问题第6个回答:
SQL code



 set s.SIncease=case

                      --积分大于1000就是星级.所以不用判断是否是星级

                   when m.Mem_Type<> N'一般VIP会员' then s.SMark*0.3

                   else case 

                          when s.SMark>4000 then 

                               s.SMark*0.3

                        when s.SMark>3000 then 

                           [color=#FF0000]  ( case when s.Mark>3000

                                   then

                                       (4000-s.Mark)*28%+(s.Mark-(4000-s.Mark))*30%

                                   when s.Mark>2000

                                    then 

                                       (3000-s.Mark)*25%+1000*28%+(s.Mark-(3000-s.Mark)-1000)*30%  

                                   when s.Mark>1000

                                     then 

                                       (2000-s.Mark)*23%+1000*25%+1000*28%+(s.Mark-(2000-s.Mark)-2000)*30%

                                   when s.Mark>0 

                                    then    

                                (1000-s.Mark)*20%+1000*23%+1000*25%+(s.Mark-(1000-s.Mark)-2000)*28%

                                     end) [/color]                 

                            when s.SMark>2000 then 

                               1000*0.2+1000*0.23+(s.SMark-2000)*0.25  

                          when s.SMark>1000 then

                               (s.SMark-1000)*.023+1000*0.2

                          else  s.SMark*0.2

                       end

                  end




这个问题第7个回答:
case when 只能返回结果,而不能返回表达式。

你红色的部分 加了 % 不明白是什么意思。 要是想成为 百分数则用

rtrim(x*1.0/y) + '%'


case when .. then x/y% end
返回表达式,是错的。

如果你的%在这里是想取模

select
case when .. then x/y end
%
第二操作数
from ...


这个问题第8个回答:
ding
这个问题第9个回答:
我问下
我2楼的那个代码有冒的问题
这个问题第10个回答:
SQL code



case

                      --积分大于1000就是星级.所以不用判断是否是星级

                   when m.Mem_Type<> N'一般V

[1] [2] [3] [4] 下一页  

作者:ws_hgo 来源:C.S.D.N
】【关闭窗口
·上页:
·下页:
相关文章
     数据库类教程 - MsSql综合技巧
普通教程【脑袋快想爆炸了- -!】 怎么样
普通教程关于级联删除地疑难,新手提问,
普通教程怎么样动态控制列数?
普通教程数据库恢复 MS2000
普通教程当数据库中varchar字段值为null
普通教程create function 怎么才无法要返
普通教程各位帮我看看是啥疑难啊, SQL运
普通教程SQL server 2005 安装疑难 SP2更
普通教程sql update
普通教程update触发器地疑难
普通教程字符串地查询疑难
普通教程安全性--登陆--想建一个用户tes
精彩图片汇集
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部
网站文本地图
版权所有:库库中文 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2008 www.QQGB.com online services. all rights reserved. 蜀ICP备05015578
Template designed by Virus. Optimized for 1024x768 to Firefox,Opera and MS-IE6. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光