我试图使用以下查询查询amazon红移数据库:
NVL(SUM(CASE WHEN (original_price>0) THEN (original_price - sale_price1)
ELSE (NVL(savings_low,0)) END),0)然而,这给出了一个
无效操作:"NVL“或”NVL“附近的语法错误
错误。
这是从最初的mySQL查询中改编的,该查询看起来如下(并在mysql中工作):
IFNULL(SUM(IF(original_price>0, original_price - sale_price1,
IFNULL(savings_low,0))),0)有人能看出这是怎么回事,并提出解决办法吗?
发布于 2017-04-06 14:15:24
select语句的这一部分完全有效。您可以使用以下查询验证它,该查询测试空值和非空值的所有八个组合:
with mock_data as
(
SELECT NULL::integer as original_price, null::integer as sale_price1, null::float as savings_low UNION ALL
SELECT 100, 50, 0.10 UNION ALL
SELECT 100, 50, NULL UNION ALL
SELECT 100, NULL, 0.10 UNION ALL
SELECT 100, NULL, NULL UNION ALL
SELECT NULL, 50, 0.10 UNION ALL
SELECT NULL, 50, NULL UNION ALL
SELECT NULL, NULL, 0.10
)
SELECT NVL(
SUM(
CASE WHEN (original_price > 0)
THEN (original_price - sale_price1)
ELSE (NVL (savings_low,0))
END)
,0)
FROM mock_data语法错误出现在查询的其他地方:我怀疑SELECT语句中的前面内容缺少了后缀逗号。
https://stackoverflow.com/questions/43256239
复制相似问题