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] 下一页