请告诉我为什么以下代码:
round((CASE WHEN x.sprd_units = 0 then 0 ELSE sum(CASE WHEN d.ver_desc_txt = 'BEST OFFICIAL PROJECTION' THEN d.unit_qty ELSE 0 END) / x.sprd_units)::numeric, 2) as space_units,
返回错误:语法错误在或附近")" 以及正确的语法应该如何 (PostgreSql 8.3) 感谢
答案 0 :(得分:0)
我认为问题是你有两次CASE用法,但你只有END一次。
另外,我宁愿使用CAST
然后使用::numeric
因为它与数据库无关,所以我更换了它。
试试这个;
round(CAST(CASE WHEN x.sprd_units = 0 then 0 ELSE sum(CASE WHEN d.ver_desc_txt = 'BEST OFFICIAL PROJECTION' THEN d.unit_qty ELSE 0 END) / x.sprd_units END as numeric), 2) as space_units