【发布时间】:2017-11-09 13:54:42
【问题描述】:
我正在尝试为 Microsoft Access 编写以下查询,并且在此处遇到关于最后三个字符的问题,有人可以告诉我我的 Access 语法有什么问题吗:
SELECT DISTINCT Searches.Search ,IIF(Chemical_Names.Category IS NOT NULL, Chemical_Names.Category, IIF(CAS_Numbers.Category IS NOT NULL , CAS_Numbers.Category, IIF(Brand_Name.Category IS NOT NULL, Brand_Name.Category,
IIF(PART.Category IS NOT NULL, PART.Category,CAT.Category)))) 作为类别
从搜索
左连接
(从 Cat1 联合中选择 *
从 Cat2 联合中选择 *
从 Cat3 UNION 中选择 *
SELECT * FROM Cat4) 作为 CAT
在
搜索.搜索 = CAT.搜索
左连接
(从第 1 部分联合中选择 *
从第 2 部分联合中选择 *
从第 3 部分联合中选择 *
SELECT * FROM Part4) 作为 PART
在
Searches.Search = PART.Search
左连接
供应商名称
在
搜索.搜索 = 供应商名称.搜索
左连接
化学名称
在
Searches.Search = Chemical_Names.Search
左连接
化学名称
在
Searches.Search = CAS_Number.Search
左连接
品牌
在
Searches.Search = Brand_Name.Search;
【问题讨论】:
-
这是哪个 RDBMS? SQL Server?
-
@GregoryHigley 是 MS Access,作为标签和文本状态。
-
我将标签更正为
ms-access。access清如泥。 -
您的代码中没有 CASE WHEN,并且 SWITCH 在我见过的任何版本的 Access SQL 中都不可用。您是否正在寻找 IIF()(或 IFF() - 我已经很久没有编写任何 Access SQL)了?
-
尝试使用
IIF(situation, do-this-when-true, do-this-when-false)而不是switch。示例见stackoverflow.com/questions/9310098/…