在条件为 SQL 的 where 子句中使用 case
Using case in where clause with conditions in SQL
我编写了以下查询以根据条件计算时间:
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;
所以 objective 是:
如果该值 >= 8 分钟(0.133 小时),则有一些 类 我需要花费的时间,而其他 类 不属于该组
时间必须 >= 5 分钟(0.0833 小时)。我已经尝试使用 CASE 进行上述操作但不确定。没有这样的错误,但我如何确保我得到
正确的价值观。
有人可以帮我解决这个问题吗?
为什么你做的这么复杂?尝试将大小写替换为
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
不会吧
where h.hours >=
case when h.group in ('Adult','Zone','Family','Latino','Comedy','West') then 0.13333
else 0.08333
end
我编写了以下查询以根据条件计算时间:
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;
所以 objective 是:
如果该值 >= 8 分钟(0.133 小时),则有一些 类 我需要花费的时间,而其他 类 不属于该组
时间必须 >= 5 分钟(0.0833 小时)。我已经尝试使用 CASE 进行上述操作但不确定。没有这样的错误,但我如何确保我得到
正确的价值观。
有人可以帮我解决这个问题吗?
为什么你做的这么复杂?尝试将大小写替换为
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
不会吧
where h.hours >=
case when h.group in ('Adult','Zone','Family','Latino','Comedy','West') then 0.13333
else 0.08333
end