我试图找出如何在SQL Server存储过程中具有以下条件。 我有一个@Variance参数,可以有'Y'或'N'或'A'
where条件必须如下:
IF @Variance = 'Y' THEN
flag_d ≠ ‘Y’ OR flag_c ≠ ‘Y’
IF @Variance = 'N' THEN
flag_d = ‘Y’ AND flag_c = ‘Y’
and If @Variance = 'A' THEN
Do not check columns flag_c and flag_d.
flag_c和flag_d可以有以下值'Y','N','X'或者它可以是空白的。
有没有办法可以在不使用动态sql的情况下实现这一点。
答案 0 :(得分:0)
您可以使用Or
子句中的简单Where
语句执行此操作:
Where (@Variance = 'Y' And (Flag_D <> 'Y' Or Flag_C <> 'Y'))
Or (@Variance = 'N' And (Flag_D = 'Y' And Flag_C = 'Y'))
Or (@Variance = 'A')
答案 1 :(得分:-1)
这样的事情可能会帮助你开始:
CASE
WHEN @Variance = 'Y' THEN outcome
WHEN @Variance = 'N' THEN outcome
WHEN @Variance = 'A' THEN outcome
ELSE something
END
或者如果你需要Y,N和A来做所有不同的事情,那么做多个案例:
CASE
WHEN @Variance = 'Y' THEN outcome1
END,
CASE
WHEN @Variance = 'N' THEN outcome2
END,
CASE
WHEN @Variance = 'A' THEN outcome3
END