Sql 如何在Access中执行if语句?

Sql 如何在Access中执行if语句?,sql,ms-access,Sql,Ms Access,我有我的角色表(对我来说这是一个糟糕的计划),它由4个字段组成:角色名称、类型1、类型2、类型3 每个typeX要么有一个Y表示是,要么有一个N表示否 样本数据: Hero, Y, N, N Human, N, Y, N Dog, Y, N, N 我希望我的输出是: Hero Type1 Human Type2 Dog Type1 帮忙?求你了 您需要使用该语句,在您的情况下,必须嵌套它们。 比如: select role_name, iif(type1 = "Y", "Type1"

我有我的角色表(对我来说这是一个糟糕的计划),它由4个字段组成:角色名称、类型1、类型2、类型3

每个typeX要么有一个Y表示是,要么有一个N表示否

样本数据:

Hero, Y, N, N
Human, N, Y, N
Dog, Y, N, N
我希望我的输出是:

Hero Type1
Human Type2
Dog Type1
帮忙?求你了

您需要使用该语句,在您的情况下,必须嵌套它们。 比如:

select role_name,
    iif(type1 = "Y", "Type1", iif(type2 = "Y", "Type2", iif(type3 = "Y", "Type3", "unknown")))
from roles
您可以使用嵌套来实现这一点

SELECT role_name, iif(type1='Y', "Type1", 
                  iif(type2='Y', "Type2", "Type3"))
FROM roles
或者如果您想知道没有指定类型

SELECT role_name, iif(type1='Y', "Type1", 
                  iif(type2='Y', "Type2", 
                  iif(type3='Y', "Type3", "N/A")))
FROM roles

但是,这确实假设您永远不会有具有多个类型的人…

如果type1、type2、type3的数据类型为Yes/No有关系吗?在这种情况下,您可以将其评估为true false,即iif(type1、type1等)。不需要任何相等检查(除非未指定默认值,否则您有空值)嗯,Access在每个rownermind中都抛出了#Error,明白了。数据类型为yes/no,值为-1/0。噢,谢谢!