来自 ACCESS 的条件 SELECT

Conditional SELECT from ACCESS

我正在使用 OleDb 查询 Access 数据库

我有一个 SQL,它从 3 个连接表中选择多个列。它工作正常,直到我尝试包含 CASE 语句或等效项。

如果 TableA.col1 为 NULL,我想要 return TableB.col2,否则我想要 TableA.col1。

请求的示例数据:

table A
col 1 - NULL
col 2 - 78

table B
col 1 - 53
col 2 - 12

如果上面存在,TableA.col1 是 NULL 所以我想要 TableB.col2: 12

table A
col 1 - 35
col 2 - 78

table B
col 1 - 53
col 2 - 12

如果上面存在,TableA.col1 不是 NULL 所以我会 return 它:35

我的 SQL 已经连接了 3 个表和 return 的 100 列。这只是在列表中添加一个额外的列。

我试过:

SELECT CASE WHEN TableA.col1 IS NULL THEN TableB.col2 ELSE TableA.col1 AS col

这给出了 'System.Data.OleDb.OleDbException' 类型的第一次机会异常发生在 System.Data.dll 附加信息:IErrorInfo.GetDescription 失败 E_FAIL(0x80004005) 和

Nz(TableA.col1, TableB.col2) AS col

给我: 'System.Data.OleDb.OleDbException' 类型的第一次机会异常发生在 System.Data.dll 附加信息:表达式中的未定义函数 'NZ' 还有这两个:

IIF(TableA.col1 is NULL, TableB.col2,TableA.col1) AS col 
IIF(isNull(TableA.col1), TableB.col2,TableA.col1) AS col 

两者都给出了相当通用的错误消息:'System.Data.OleDb.OleDbException' 类型的第一次机会异常发生在 System.Data.dll 附加信息:没有为一个或多个必需参数提供值。

这是有效的 Access SQL 语法:

IIF(TableA.col1 is NULL, TableB.col2, TableA.col1) AS col

错误消息 "No value given for one or more required parameters" 表示 Access 无法将查询中的某些内容识别为对象、函数或 SQL 关键字。通常这是由于拼写错误而发生的。

在 Access 查询设计器中将您的 SELECT 语句作为新查询进行测试。当您尝试从那里 运行 它时,Access 将显示一个输入对话框,要求您为它找到的第一个参数提供一个值。请注意,对话框包含参数的名称。如果这不能查明问题,请向我们展示您的查询 SQL 并告诉我们 Access 标识的参数名称。