【发布时间】:2015-04-13 13:18:37
【问题描述】:
我正在使用 OleDb 来查询 Access 数据库
我有一个 SQL,它从 3 个连接表中选择多个列。在我尝试包含 CASE 语句或等效语句之前,它工作正常。
如果 TableA.col1 为 NULL,我想返回 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,所以我会返回它:35
我的 SQL 已经连接了 3 个表并返回 100 列。这只是在列表中添加了一个额外的列。
我试过了:
SELECT CASE WHEN TableA.col1 IS NULL THEN TableB.col2 ELSE TableA.col1 AS col
这给出了 System.Data.dll 中发生的“System.Data.OleDb.OleDbException”类型的第一次机会异常 附加信息:IErrorInfo.GetDescription 失败,出现 E_FAIL(0x80004005) 和
Nz(TableA.col1, TableB.col2) AS col
给我:System.Data.dll 中发生了“System.Data.OleDb.OleDbException”类型的第一次机会异常 附加信息:表达式中未定义的函数“NZ” 还有这两个:
IIF(TableA.col1 is NULL, TableB.col2,TableA.col1) AS col
IIF(isNull(TableA.col1), TableB.col2,TableA.col1) AS col
两者都给出了相当通用的错误消息:System.Data.dll 中发生了“System.Data.OleDb.OleDbException”类型的第一次机会异常 附加信息:没有为一个或多个必需参数指定值。
【问题讨论】:
-
请使用示例数据和所需结果编辑您的问题。目前尚不清楚您要做什么。
-
如果 TableA.col1 为 NULL,我想返回 TableB.col2,否则我想要 TableA.col1;按要求添加示例数据