在 MS Access 中的情况
Case when in MS Access
我正在尝试使用 IIF 和 Not IN 运算符来识别某些行,但出现语法错误。我想使用以下查询识别列的 none 包含 A1 和 A2 的行。我没有得到想要的结果。非常感谢任何帮助,并提前感谢您。
Table:(注:原table中最多有16个variables/Columns)
ID KH1 KH2 KH3 KH4 KH5 KH6
001 A2 B1 C1 D1 E1 F1
002 F1 A1 B1 D1 E1 G1
003 A1 B1 D1 E1
004 XX XX XX XX XX XX
005 AA AB AC A2 XX
006 XX XX XX A1
007 XX XX XX XX A1 XX
008 XX XX AE XX XX AC
输出:
ID KH1 KH2 KH3 KH4 KH5 KH6 Identified
001 A2 B1 C1 D1 E1 F1 No
002 F1 A1 B1 D1 E1 G1 No
003 XX B1 D1 E1 Yes
005 AA AB AC A2 XX Yes
006 XX XX XX A1 No
007 XX XX XX XX A1 XX No
我的查询
Select * from Table
IIF (((Nz([KH1],' ')) Not in ('A1', 'A2')) AND ((Nz([KH2],' ')) Not in ('A1', 'A2')) AND ((Nz([KH3],' ')) Not in ('A1', 'A2')) AND ((Nz([KH4],' ')) Not in ('A1', 'A2')) AND ((Nz([KH5],' ')) Not in ('A1', 'A2')) AND ((Nz([KH6],' ')) Not in ('A1', 'A2')));
尝试下面的查询
SELECT MyTable.*,
IIf([KH1] In ('A1','A2'),"No",
IIf([KH2] In ('A1','A2'),"No",
IIf([KH3] In ('A1','A2'),"No",
IIf([KH4] In ('A1','A2'),"No",
IIf([KH5] In ('A1','A2'),"No",
IIf([KH6] In ('A1','A2'),"No","Yes")))))) AS Identified
FROM MyTable;
代码中的 IIF()
函数缺少 truepart 和 elsepart:
SELECT *,
IIF ( Nz([KH1], '') NOT IN ('A1', 'A2')
AND Nz([KH2], '') NOT IN ('A1', 'A2')
AND Nz([KH3], '') NOT IN ('A1', 'A2')
AND Nz([KH4], '') NOT IN ('A1', 'A2')
AND Nz([KH5], '') NOT IN ('A1', 'A2')
AND Nz([KH6], '') NOT IN ('A1', 'A2'),
'Yes',
'No'
) AS Identified
FROM tablename;
或者:
SELECT *,
IIF ( Nz([KH1], '') IN ('A1', 'A2')
OR Nz([KH2], '') IN ('A1', 'A2')
OR Nz([KH3], '') IN ('A1', 'A2')
OR Nz([KH4], '') IN ('A1', 'A2')
OR Nz([KH5], '') IN ('A1', 'A2')
OR Nz([KH6], '') IN ('A1', 'A2'),
'No',
'Yes'
) AS Identified
FROM tablename;
我正在尝试使用 IIF 和 Not IN 运算符来识别某些行,但出现语法错误。我想使用以下查询识别列的 none 包含 A1 和 A2 的行。我没有得到想要的结果。非常感谢任何帮助,并提前感谢您。
Table:(注:原table中最多有16个variables/Columns)
ID KH1 KH2 KH3 KH4 KH5 KH6
001 A2 B1 C1 D1 E1 F1
002 F1 A1 B1 D1 E1 G1
003 A1 B1 D1 E1
004 XX XX XX XX XX XX
005 AA AB AC A2 XX
006 XX XX XX A1
007 XX XX XX XX A1 XX
008 XX XX AE XX XX AC
输出:
ID KH1 KH2 KH3 KH4 KH5 KH6 Identified
001 A2 B1 C1 D1 E1 F1 No
002 F1 A1 B1 D1 E1 G1 No
003 XX B1 D1 E1 Yes
005 AA AB AC A2 XX Yes
006 XX XX XX A1 No
007 XX XX XX XX A1 XX No
我的查询
Select * from Table
IIF (((Nz([KH1],' ')) Not in ('A1', 'A2')) AND ((Nz([KH2],' ')) Not in ('A1', 'A2')) AND ((Nz([KH3],' ')) Not in ('A1', 'A2')) AND ((Nz([KH4],' ')) Not in ('A1', 'A2')) AND ((Nz([KH5],' ')) Not in ('A1', 'A2')) AND ((Nz([KH6],' ')) Not in ('A1', 'A2')));
尝试下面的查询
SELECT MyTable.*,
IIf([KH1] In ('A1','A2'),"No",
IIf([KH2] In ('A1','A2'),"No",
IIf([KH3] In ('A1','A2'),"No",
IIf([KH4] In ('A1','A2'),"No",
IIf([KH5] In ('A1','A2'),"No",
IIf([KH6] In ('A1','A2'),"No","Yes")))))) AS Identified
FROM MyTable;
代码中的 IIF()
函数缺少 truepart 和 elsepart:
SELECT *,
IIF ( Nz([KH1], '') NOT IN ('A1', 'A2')
AND Nz([KH2], '') NOT IN ('A1', 'A2')
AND Nz([KH3], '') NOT IN ('A1', 'A2')
AND Nz([KH4], '') NOT IN ('A1', 'A2')
AND Nz([KH5], '') NOT IN ('A1', 'A2')
AND Nz([KH6], '') NOT IN ('A1', 'A2'),
'Yes',
'No'
) AS Identified
FROM tablename;
或者:
SELECT *,
IIF ( Nz([KH1], '') IN ('A1', 'A2')
OR Nz([KH2], '') IN ('A1', 'A2')
OR Nz([KH3], '') IN ('A1', 'A2')
OR Nz([KH4], '') IN ('A1', 'A2')
OR Nz([KH5], '') IN ('A1', 'A2')
OR Nz([KH6], '') IN ('A1', 'A2'),
'No',
'Yes'
) AS Identified
FROM tablename;