如何在SQL Server中转换或重写Access IIF语句

时间:2015-04-25 16:43:37

标签: sql-server ms-access

我认为如果condtion为true或false,则IIf语句返回一个值但是Access中的这个IIf语句返回字段并且它返回值。

IIf([A1]![KPr],[A1]![Kat],IIf([Data2]![Kat],[Data2]![Kat],[Data1]![Kat])),

表左边加入了from子句 我尝试使用SQL ServerCASE WHEN中实现此声明,但它也接受真或假的条件。

我如何理解并实现这一陈述。

1 个答案:

答案 0 :(得分:1)

VB,VBA和Access中的IIf函数与注释中的ps_prakash02相同:iif(condition, value_if_true, value_if_false)。这意味着如果条件的计算结果为true,则返回value_if_true,否则返回value_if_false 因此,将IIf转换为t-sql只是CASE WHEN condition THEN value_if_true ELSE _value_if_false END

我不太确定[A1]![KPr]在访问中意味着什么,我猜它是表A1的KPr列值或类似的东西,所以我会留下它们在你的问题中并且只是替换它们在我的回答中IIFCASE

CASE WHEN [A1]![KPr] THEN [A1]![Kat]
     ELSE 
         CASE WHEN [Data2]![Kat] THEN [Data2]![Kat] 
              ELSE [Data1]![Kat]
         END
 END

注意: In SQL Server 2012 Microsoft included IIF in t-sql.