SQL 中的嵌套 IF 语句

Nested IF statement in SQL

我正在尝试在 SQL 查询中重新创建我在 excel 中使用的以下嵌套 IF 语句:

=IF(AE20="",0,IF(AH20="",IF(AG20="",IF(AF20="",IF(AE20="","",AE20),AF20 ),AG20),AH20))

我做了一些研究,看来我需要使用 CASE,但在我发现的示例中,我仍然无法按照上面的示例使用正确的语法连接点。

我以为它会开始

Select 案例 当 ex_table.AE = ""

而且我不确定从那里去哪里。感谢您的帮助!

编辑

mysqltable被称为best_estimate

我有以下字段:JCE_TOTAL, CDSI_TOTAL, INITIAL_TOTAL and FINAL_TOTAL

我希望我的 SQL 查询遍历这些列并选择最新的可用值(这些值随着时间的推移变得可用,按上面列出的顺序)。

如果 FINAL_TOTAL 中有一个值,它应该选择 FINAL_TOTAL 中的值。

如果 FINAL_TOTAL 为空,但 INITIAL_TOTAL 中有一个值,它应该 select 该值。

如果这两个字段都是空白,但 CDSI_TOTAL 有一个值,它应该选择 CDSI_TOTAL,等等

如果所有字段都为空,则结果应为 0

如果我正确地实现了您的目标,您就不需要执行此大型嵌套 CASE 语句。还有更简单的方法:

SELECT COALESCE(AE, AH, AG, ...) AS my_value
FROM my_table

所以根据您的评论,您的查询可能是这样的:

SELECT COALESCE(FINAL_TOTAL, INITIAL_TOTAL, CDSI_TOTAL, JCE_TOTAL,  0 ) AS my_value
FROM best_estimate

编辑

SELECT 
   OFS_ID,
   COALESCE(FINAL_TOTAL, INITIAL_TOTAL, CDSI_TOTAL, JCE_TOTAL,  0 ) AS my_value
FROM best_estimate