Jet / ACE SQL, оператор iif, 2 ложных значения в одном столбце - PullRequest
0 голосов
/ 31 октября 2018

У меня есть следующий iif оператор в моем запросе sql в Excel.

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 равен нулю, я хочу добавить туда н / д

Попытка что-то вроде:

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 голосов
/ 31 октября 2018

При использовании вложенных 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
0 голосов
/ 31 октября 2018

Попробуйте это

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