我有这个 SQL 查询:
var sqlQuery =
"SELECT '"+dateRanges[ic].DATE_FROM+"' as DATE_FROM, "+
" '"+dateRanges[ic].DATE_TO+"' as DATE_TO, "+
" COUNT(*) AS DIALS_CNT, "+
" SUM(CASE WHEN dc.call_result = '"+CALL_RESULT_STATE_APPT+"' THEN 1 ELSE 0 END) AS '"+APPT_CNT+"', "+
" SUM(CASE WHEN dc.call_result = '"+CALL_RESULT_STATE_CONV_NO_APPT+"' THEN 1 ELSE 0 END) AS '"+CONVERS_CNT+"' , "+
" SUM(CASE WHEN dc.call_result = '"+CALL_RESULT_STATE_CANNOT_REACH+"' THEN 1 ELSE 0 END) AS '"+CANNOT_REACH_CNT+"' "+
" FROM "+DIALED_CALLS_TABLE+" dc "+
" WHERE dc.date BETWEEN '"+dateRanges[ic].DATE_FROM+"' AND '"+dateRanges[ic].DATE_TO+"';";
Run Code Online (Sandbox Code Playgroud)
问题是,如果值的总和为零,结果将包含 null 值。我以为我可以使用它来解决它,THEN 1 ELSE 0 END 但它不起作用。
我该如何解决它以获得零而不是空的结果?
谢谢你的帮助。
当 SUM 没有获取任何开始值时(即,当您的 WHERE 子句不匹配任何行时),它会返回 NULL。
如果您可以接受浮点数结果,请将 SUM 替换为TOTAL。否则,您可以在整个总和周围放置一个 IFNULL:
SELECT ... IFNULL(SUM(CASE ... END), 0) FROM ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2380 次 |
| 最近记录: |