SQL 视图用IIF = 居然不可以,CASE WHEN居然可以

SELECT MstGENLDept.DEP_DESC, MstFMISWWaste.WDesc,TxnFmisWasteDaily.Weight, TxnFmisWasteDaily.TxnDate, 
(case TxnFmisWasteDaily.Split when 1 then 'Inactive' when 0 then 'Active' end) as Actived, TxnFmisWasteDaily.ActiveDate,'' as Remark, TxnFmisWasteDaily.ID,
(case TxnFmisWasteDaily.ProductionFlag when 1 then 'Production' when 0 then 'General' end) as ProductionFlag 
FROM TxnFmisWasteDaily INNER JOIN MstFMISWWaste ON TxnFmisWasteDaily.WasteCode =  MstFMISWWaste.WCode INNER JOIN 
MstGENLDept ON TxnFmisWasteDaily.DepartmentID = dbo.MstGENLDept.DEP_CODE where ConfirmDate is not null


SELECT MstGENLDept.DEP_DESC, MstFMISWWaste.WDesc,TxnFmisWasteDaily.Weight, TxnFmisWasteDaily.TxnDate, 
(iif(TxnFmisWasteDaily.Split = 1,  'Inactive','Active')) as Actived, TxnFmisWasteDaily.ActiveDate,'' as Remark, TxnFmisWasteDaily.ID,
(iif(TxnFmisWasteDaily.ProductionFlag = 1 ,'Production' ,'General')) as ProductionFlag 
FROM TxnFmisWasteDaily INNER JOIN MstFMISWWaste ON TxnFmisWasteDaily.WasteCode =  MstFMISWWaste.WCode INNER JOIN 
MstGENLDept ON TxnFmisWasteDaily.DepartmentID = dbo.MstGENLDept.DEP_CODE where ConfirmDate is not null

两个语句执行窗口下都可以通过,但是放到视图里面后IIF却提示不行!搞不懂!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SQL 中,可以使用 CASE 表达式实现类似于 iif 函数的功能。CASE 表达式有两种形式:简单 CASE 和搜索 CASE。 简单 CASE 表达式的语法如下: ``` CASE expression WHEN value1 THEN result1 WHEN value2 THEN result2 ... WHEN valueN THEN resultN ELSE default_result END ``` 其中,expression 是要测试的表达式,value1、value2、…、valueN 是可能的值,result1、result2、…、resultN 是与每个值相关联的结果,default_result 是一个可选的默认结果。如果 expression 等于 value1,那么结果就是 result1;如果 expression 等于 value2,那么结果就是 result2,以此类推。如果 expression 不等于任何一个 value,那么结果就是 default_result(如果指定了)或者 NULL(如果没有指定)。 例如,下面的 SQL 语句使用简单 CASE 表达式将销售额分为三个档次: ``` SELECT order_id, amount, CASE WHEN amount < 1000 THEN 'Low' WHEN amount >= 1000 AND amount < 5000 THEN 'Medium' ELSE 'High' END AS level FROM orders; ``` 搜索 CASE 表达式的语法如下: ``` CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... WHEN conditionN THEN resultN ELSE default_result END ``` 其中,condition1、condition2、…、conditionN 是一系列条件,result1、result2、…、resultN 是与每个条件相关联的结果,default_result 是一个可选的默认结果。如果第一个条件为真,那么结果就是 result1;如果第二个条件为真,那么结果就是 result2,以此类推。如果所有条件都为假,那么结果就是 default_result(如果指定了)或者 NULL(如果没有指定)。 例如,下面的 SQL 语句使用搜索 CASE 表达式将学生的成绩转换为等级: ``` SELECT student_id, score, CASE WHEN score >= 90 THEN 'A' WHEN score >= 80 THEN 'B' WHEN score >= 70 THEN 'C' WHEN score >= 60 THEN 'D' ELSE 'F' END AS grade FROM scores; ``` 以上两种方式都可以实现类似于 iif 函数的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值