【发布时间】:2019-02-05 13:39:09
【问题描述】:
我正在尝试使用 Excel 工作簿作为数据源运行以下查询,但我不明白 COALESCE 函数为何不起作用。查询是否有问题或 COALESCE 函数不适用于 Excel?
SELECT COALESCE([net value], 0)
FROM [sheet1$a1:e6]
WHERE [units] = 'UN03'
UNION ALL
SELECT COALESCE([net value], 0)
FROM [sheet1$a1:e6]
WHERE [units] = 'UN06'
UNION ALL
SELECT COALESCE([net value], 0)
FROM [sheet1$a1:e6]
WHERE [units] = 'UN04'
UNION ALL
SELECT COALESCE([net value], 0)
FROM [sheet1$a1:e6]
WHERE [units] = 'UN02'
UNION ALL
SELECT COALESCE([net value], 0)
FROM [sheet1$a1:e6]
WHERE [units] = 'UN01'
似乎唯一有效的是下面的查询,但我无法返回输出,因为 IFF 函数只接受单引号内的值,例如,'true'、'false'。我试图返回这些值sheet1$.net value, '0',sheet1$.net value 包含查询输出,0 表示查询没有返回任何内容。谁能告诉我我做错了什么?
SELECT IIF(Count(`sheet1$`.`net value`) > 0, `sheet1$`.`net value`, '0') AS
'Net Value'
FROM `sheet1$` `Sheet1$`
WHERE ( `sheet1$`.f1 = 'UN03' )
【问题讨论】:
-
您使用的是哪个提供商:Jet、ACE、...?你试过
IFNULL而不是COALESCE吗? -
COALESCE 用于列表或多列,如果要更改/检查一项,请使用 IsNull,如
SELECT IsNull([net value], 0) -
嘿安德鲁,我正在使用 Microsoft.ACE.OLEDB.12.0。我也试过 IFNULL 和 ISNULL。
-
不确定这是否有助于提及,但您不应该费心将表别名为自己的名称:
sheet1$` `Sheet1$