在where子句中使用case,其中包含SQL中的条件

时间:2018-02-12 05:16:26

标签: sql case where-in

我编写了以下查询,根据条件计算小时数:

select  h.device_id,
        h.month_id,
        h.group,
        h.hours,
        t.class
from    dbo.network_hours h,
        dbo.monthly_class t
where   h.device_id = t.device_id
        and h.month_id = t.month_id
        and
        case when h.group IN ('Adult','Zone','Family','Latino','Comedy','West')
             then h.hours >= 0.13333                                
        end h.hours >= 0.08333;

所以目标是:
如果该值为> = 8分钟(0.133小时),并且其他类别不属于该组,则需要花费一些课时间 小时必须> = 5分钟(0.0833小时)。我使用CASE尝试过以上但不确定。没有这样的错误,但我如何确保我得到了 正确的价值观 有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

为什么你这么复杂?尝试更换案例 h.hours >= 0.08333 or (h.group in ('Adult'....) and h.hours>=0.13333)) 或者如果您更喜欢使用case h.hours >= case when h.group in ('Adult'....) then 0.13333 else 0.08333 end

答案 1 :(得分:1)

那不是

where h.hours >= 
  case when h.group in ('Adult','Zone','Family','Latino','Comedy','West') then 0.13333
       else 0.08333
  end