首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套NVL查询问题

嵌套NVL查询问题
EN

Stack Overflow用户
提问于 2017-04-06 13:11:39
回答 1查看 395关注 0票数 1

我试图使用以下查询查询amazon红移数据库:

代码语言:javascript
复制
NVL(SUM(CASE WHEN (original_price>0) THEN (original_price - sale_price1) 
ELSE (NVL(savings_low,0)) END),0)

然而,这给出了一个

无效操作:"NVL“或”NVL“附近的语法错误

错误。

这是从最初的mySQL查询中改编的,该查询看起来如下(并在mysql中工作):

代码语言:javascript
复制
IFNULL(SUM(IF(original_price>0, original_price - sale_price1, 
IFNULL(savings_low,0))),0)

有人能看出这是怎么回事,并提出解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-06 14:15:24

select语句的这一部分完全有效。您可以使用以下查询验证它,该查询测试空值和非空值的所有八个组合:

代码语言:javascript
复制
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语句中的前面内容缺少了后缀逗号。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43256239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档