Sql 如何在where子句中使用case语句
表有很多列。我刚刚创建了一个示例表,并显示了3列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
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'
,因为这是用户可以根据您的报告输入的内容