如何在where

时间:2015-05-22 10:55:06

标签: sql

表有很多列。我刚创建了一个示例表并显示了3列。

Id Value  Code 
1  A      10
2  B      20
3  C      30
4  D      22
5  E      11
6  F      12
7  G      14

在选择报告中,我显示A或B或C的值为C,D或E的值为E剩余,因为它是 意思是我这样显示

Id Value  count
1 C      10
2 C      20
3 C      30
4 E      22
5 E      11
6 F      12
7 G      14

但是当用户选择C想比较where子句中的所有A,B和c时 E想比较像这样的where子句中的D和E.如何在这里使用case语句

从Sample中选择*,其中value =

像这样 我想要这样

Select * from Sample
 WHERE value = CASE WHEN @value = 'C' THEN A ELSE @value END 

但是这里有3个像C,A,C这样的值。如果我这样写的话

Select * from Sample
 WHERE value = CASE WHEN @value = 'C' THEN 'A' 
 WHEN @value = 'C' THEN 'B'
 WHEN @value = 'C' THEN 'C'
 ELSE @value END 

那就错了。

1 个答案:

答案 0 :(得分:1)

这是你的意思吗?

declare @code nvarchar(20) = 'C'

SELECT *
FROM table1
WHERE (@code = 'C' AND value in ('A', 'B', 'C'))
OR (@code = 'E' AND value in ('D', 'E'))