表有很多列。我刚创建了一个示例表并显示了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
那就错了。
答案 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'))