根据Aggregate和CASE函数创建计算值

时间:2017-05-23 02:55:39

标签: sql-server

我正在处理下面的查询,并希望将它用作Tableau中的数据源 - 我需要的字段是'SUM_ORDERS'/'SUM_FCST' - 无论如何都要在下面的查询中计算出给定的聚合和案例功能?似乎无法划分整个聚合或新字段的名称(即'SUM_FCST')在此先感谢。

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ActivityName.this);
String username = prefs.getString("username", "Default NickName");  
String password = prefs.getString("password", "Default Password");  
boolean checkBox = prefs.getBoolean("checkBox", false);  

1 个答案:

答案 0 :(得分:2)

您可以使用NULLIF来避免被零除错误'

ISNULL(CAST(SUM(CASE WHEN M.REQUIREMENT_TYPE = 'PB' 
       THEN M.QUANTITY 
       ELSE 0 
    END) as decimal)
/ NULLIF(SUM(CASE 
                 WHEN M.REQUIREMENT_TYPE IN('01','04','KE') THEN M.QUANTITY 
                 ELSE 0 
             END) 
       ,0), 0) AS [SUM_ORDERS/SUM_FCST]

当' SUM_FCST'时,返回结果为NULL。 = 0