首页 > 解决方案 > CASE 中的多重条件

问题描述

我想创建一个可以使用 CASE 选择多个条件的查询。我有以下查询,当窗口数量超过 0 时总和,但是当我组合创建“Windows_multiple”时不起作用。当有不止一种类型的窗口时,它是多重的。

Select
SUM(CASE when h.number_of_windows_b > 0 then h.hh_weight end)/15 as Windowsb_only,
SUM(case when h.number_of_windows_c > 0 then h.hh_weight end)/15 as Windowsc_only,
SUM(case when h.number_of_windows_o > 0 then h.hh_weight end)/15 as Windowso_only,

上面的代码有效,但是当我尝试创建一个查询时,总和 h.number of windows when are multiple 我没有得到预期的输出。我正在使用以下查询:

SUM(CASE when h.number_of_windows_b > 0 AND (h.number_of_windows_c > 0 OR  h.number_of_windows_o > 0) 
         then h.hh_weight )/15
         when h.number_of_windows_c  > 0 AND (h.number_of_windows_b > 0 OR  h.number_of_windows_o > 0) 
         then h.hh_weight )/15
         when h.number_of_windows_o  > 0 AND (h.number_of_windows_b > 0 OR  h.number_of_windows_c > 0) 
         then h.hh_weight end)/15 as Windows_Multiple

标签: sqlconditional-statementscase

解决方案


这回答了问题的原始版本。

你可能只是过早end的s:

SUM(CASE when h.number_of_windows_b > 0 AND (h.number_of_windows_c > 0 OR  h.number_of_windows_o > 0) 
         then h.hh_weight / 15
         when h.number_of_windows_c  > 0 AND (h.number_of_windows_b > 0 OR  h.number_of_windows_o > 0) 
         then h.hh_weight / 15
         when h.number_of_windows_o  > 0 AND (h.number_of_windows_b > 0 OR  h.number_of_windows_c > 0) 
         then h.hh_weight / 15
     END) as Windows_Multiple

推荐阅读