sql - 根据查询结果查询设置变量
问题描述
我有一个 TempResults 表,其中包含 Point、Value 列。
Point Value
ZM1 0
ZM1-2 0,00023587
我正在尝试编写 SQL 查询:当任何点的值 =0 时,我需要设置 @dev=1,当两个值都不等于零时 @dev=2。如果任何值之一不等于零,我的查询设置@dev=2。
DECLARE @DEV int;
SELECT @DEV = CASE
WHEN Value=0 THEN 1
ELSE 2
END
FROM TempResults WHERE Point='ZM1' or Point = 'ZM1-2'
任何帮助表示赞赏。
解决方案
您可以使用条件聚合:
select @dev = min(case when value = 0 then 1 else 2 end)
from tempresults
where point in ('ZM1', 'ZM1-2')
基本上,case
表达式将0
值转换为 ; 将1
其他值转换为2
; 剩下要做的就是计算组中的最小计算值。如果有0
,你得到1
,否则2
。
推荐阅读
- python - psutil.cpu_percent() 返回什么?它是监控期间的最高、最低或平均 CPU 使用率吗?
- flutter - 使用 Flutter 从手机打开的应用菜单中自定义应用栏
- javascript - 如何避免跨域请求被阻止?
- javascript - 如何使其仅在其准确时才响应(Discord.JS)
- windows - xcopy 仅在 powershell 中的参数数量无效
- reactjs - API 调用后在 React 中更新状态时遇到问题
- asp.net - Asp .Net MVC 下拉菜单
- javascript - 如何从数组的总和中减去最大值和最小值
- r - 计算R中的相等元素
- python - 如何在不冻结UI的情况下一个接一个地运行Qthread?