Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在where子句中使用case语句_Sql - Fatal编程技术网

Sql 如何在where子句中使用case语句

Sql 如何在where子句中使用case语句,sql,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 在select报告中,我将A或B或C的值显示为C,将D或E的值显示为E,保持原样 意思是我表现得像这样 Id Value count 1 C 10 2 C 20 3 C 30 4 E 22 5

表有很多列。我刚刚创建了一个示例表,并显示了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
在select报告中,我将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 我们想比较where子句中的D和E,这里如何使用case语句

从样本中选择*值=

像这样 我想要这样

Select * from Sample
 WHERE value = CASE WHEN @value = 'C' THEN A ELSE @value END 
Select * from Sample
 WHERE value = CASE WHEN @value = 'C' THEN 'A' 
 WHEN @value = 'C' THEN 'B'
 WHEN @value = 'C' THEN 'C'
 ELSE @value END 
但这里有3个c值,比如A,B,c,如果我这样写的话

Select * from Sample
 WHERE value = CASE WHEN @value = 'C' THEN A ELSE @value END 
Select * from Sample
 WHERE value = CASE WHEN @value = 'C' THEN 'A' 
 WHEN @value = 'C' THEN 'B'
 WHEN @value = 'C' THEN 'C'
 ELSE @value END 
那就错了。

这就是你的意思吗

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'))

这似乎更像是一个SQL问题,而不是Asp.NET。你所说的比较A、B和C是什么意思?对不起,你的问题真的不清楚。正如@Adolfo所说,这与
asp.net
有什么关系?请用更多信息更新您的问题,包括您正在使用的DBMS(SQL Server 2012、Oracle、MySql等)@artm解决方案将起作用,您只需将
WHERE@code='A'
更改为
WHERE@code='C'
,因为这是用户可以根据您的报告输入的内容