日期:2014-05-16  浏览次数:20990 次

求一条复杂的sql,请帮看看!
有表如下:
  姓名       性别       工资总额    
  a             男           100
  b             男           200
  c             女           150

我想得到如下视图;
姓名       性别       工资总额       变动后的工资
  a             男           100                 50
  b             男           200                 150
  c             女           150                 50  
//男性=工资总额-50
//女性=工资总额-100
不知用一条sql可否实现?谢谢



------解决方案--------------------
update tt set 变动后的工资=工资总额-iif(性别= '男 ',50,100)
------解决方案--------------------
update 表名 set 变动后的工资=工资总额-iif(性别= '男 ',50,100)

------解决方案--------------------
select 姓名, 性别, 工资总额, 工资总额-iif(性别= '男 ',50,100) as 变动后的工资
from 表名
------解决方案--------------------

Access使用的是Jet-SQL。


JET SQL 帮助(jet4 access2000)下载地址

http://www.access911.net/index.asp?board=8&recordid=75FAB71E&tt=



------解决方案--------------------
IIf 函数


根据表达式的值,来返回两部分中的其中一个。

语法

IIf(expr, truepart, falsepart)

IIf 函数的语法含有下面这些命名参数:

部分 描述
expr 必要参数。用来判断真伪的表达式。
truepart 必要参数。如果 expr 为 True,则返回这部分的值或表达式。
falsepart 必要参数。如果 expr 为 False,则返回这部分的值或表达式。


说明

由于 IIf 会计算 truepart 和 falsepart,虽然它只返回其中的一个。因此要注意到这个副作用。例如,如果 falsepart 产生一个被零除错误,那么程序就会发生错误,即使 expr 为 True。


IIf 函数示例
本示例使用 IIf 函数来判断 CheckIt 过程之 TestMe 参数的值,如果参数值大于 1000 则传回“Large”;否则传回“小图标”。

Function CheckIt (TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large ", "Small ")
End Function


------解决方案--------------------
自己学会变通处理,IIF中写判断即可
------解决方案--------------------
自己用iif()嵌套处理吧,道理是一样的。