Jet / ACE SQL,iif语句,两个false值在同一列

时间:2018-10-31 14:48:24

标签: sql jet iif

我在excel的sql查询中有以下iif语句。

iif(master.[Canada] = '0' or master.[Canada] = ' ' or master.[Canada] IS NULL,master.[USA], master.[Canada]) as Stackoverflow

但是我想添加类似iff([Stackoverflow] is not null, [Stackoverflow], "n/a") as Stackoverflow的名称,但不能使用重复的别名'。

有人知道怎么做两个错误条件吗?我需要在Stackoverflow列中显示为N / a。

逻辑是这样的

+--------+--------+---------------+
| Canada |  USA   | Stackoverflow |
+--------+--------+---------------+
|  12345 |  35262 |         12345 |
|  15678 |  52367 |         15678 |
|        |  97536 |         97536 |
|  17893 |  35252 |         17893 |
|      0 | 120321 |        120321 |
+--------+--------+---------------+

但是,如果stackoverflow为null,我想把n / a放在那儿

尝试类似的事情:

iff(master.[Canada] <> ' ', iif(master.[Canada] = '0' or master.[Canada] = ' ' or master.[Canada] IS NULL,master.[USA], master.[Canada]), "n/a") as best_id

但是无法使其正常工作。 undefined funcation iif

2 个答案:

答案 0 :(得分:1)

在使用嵌套IIF()时,必须将封闭括号中的数字等同于开放括号中的数字。以下为每个IIF()表达式真相部分假部分缩进以强调:

IIF(master.[Canada] <> '0' AND TRIM(master.[Canada]) <> '' AND master.[Canada] IS NOT NULL, 
    master.[Canada], 
    IIF(master.[USA] <> '0' AND TRIM(master.[USA]) <> '' AND master.[USA] IS NOT NULL, 
        master.[USA], 
        'n/a'
       )
   ) as Stackoverflow

答案 1 :(得分:0)

尝试一下

iif([Stackoverflow] is not null, iif(Nz(master.[Canada],'0') = '0' or master.[Canada] = ' ',master.[USA], master.[Canada]) , "n/a") as Stackoverflow1