【发布时间】:2020-11-01 04:53:26
【问题描述】:
我想在我的 case 语句中返回多个值,例如:
SELECT
CASE
WHEN <condition 1> THEN <value1=a1, value2=b1>
WHEN <condition 2> THEN <value1=a2, value2=b2>
ELSE <value1=a3, value3=b3>
END
FROM <table>
当然我可以多次写case条件,每次返回一个值。但是,因为我有很多条件需要适应,比如说 100。一次又一次地重复 case 条件是不好的。
我想问的另一个问题是,如果一个记录符合多个条件会发生什么?这是否意味着它将返回所有这些或仅返回最后一个?例如条件 1 可能成为条件 2 的子集。会发生什么?
【问题讨论】:
-
您能说明一下您的情况吗?例如,100 个不同的案例条件是否会导致 value1 和 value2 中的每一个都有 100 个不同的适用值,或者 100 个不同的条件中的许多会产生相同的结果?条件是否都是不同字段的完全组合,还是单个字段的不同可能值?
-
是的,100 种不同的案例条件导致每个 value1 和 value2 有 100 个不同的值。条件都是不同领域的组合.. 非常感谢
-
@yzhang : 结果固定了吗?这样,与条件 1 匹配的每一行将始终在 value1 和 value2 中具有完全相同的值?
-
是的,基本上,我有 100 条规则,我需要通过表格检查每条记录,以符合这些规则,如果符合,那么我将返回 3 个值......但是有些记录可能符合多个规则。理想情况下,所有结果都将返回.. 然后,我将根据其他条件选择为每条记录保留一组值
-
@yzhang - 对于
CASE,只有第一个匹配项会返回值。如果您希望对每个输入行进行多个条件的数学运算,则需要单独进行每个检查,并将结果合并在一起。 @Yuck 和我都有可以满足你的答案。
标签: sql sql-server