首页 > 解决方案 > 根据查询结果查询设置变量

问题描述

我有一个 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'

任何帮助表示赞赏。

标签: sqlsql-servertsqlaggregate-functions

解决方案


您可以使用条件聚合:

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


推荐阅读