Using CASE in combination with WHERE to specify different columns to filter by(结合使用 CASE 和 WHERE 来指定不同的列作为过滤依据)
问题描述
这可能不是有效的 SQL,但这是我想要做的:
This probably isn't valid SQL, but this is what I'm trying to do:
SELECT *
FROM tablename
WHERE
(CASE @ScoreType
WHEN 1 THEN score1
WHEN 2 THEN score2
ELSE score3 END) >= @Score
基本上,我试图根据 @ScoreType 的值在 WHERE 子句中按不同的列进行过滤.我猜测我的方法无效是否正确?如果是这样,解决此问题的正确方法是什么?
Basically, I'm trying to filter by different columns in the WHERE clause depending on the value of @ScoreType. Am I right in guessing that my approach isn't valid? If so, what would be the proper way to go about this?
edit:抱歉,我在简化查询时不小心省略了 end 以在此处发布.实际查询确实有 end.查询本身运行良好,但结果并不如预期.原来问题出在别处.我怀疑 WHERE 子句,因为我以前从未尝试过这样的事情,并且不确定它是否是有效的 SQL.
edit: Sorry, I accidentally omitted end while simplifying the query to post here. The actual query does have end. The query itself runs fine, but the results weren't as expected. It turns out the issue was elsewhere. I suspected the WHERE clause because I've never tried anything like this before and was unsure of whether it was valid SQL.
推荐答案
这应该可行吗?
SELECT *
FROM tablename
WHERE
(CASE @ScoreType
WHEN 1 THEN score1
WHEN 2 THEN score2
WHEN 3 THEN score3
END) >= @Score
<小时>
我认为问题是:你忘记了案例的end
I think the problem is: you forgot the end to the case
这篇关于结合使用 CASE 和 WHERE 来指定不同的列作为过滤依据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:结合使用 CASE 和 WHERE 来指定不同的列作为过滤依
- 使用 Oracle PL/SQL developer 生成测试数据 2021-01-01
- 在SQL中,如何为每个组选择前2行 2021-01-01
- 如何将 SonarQube 6.7 从 MySQL 迁移到 postgresql 2022-01-01
- 以一个值为轴心,但将一行上的数据按另一行分组? 2022-01-01
- 如何将 Byte[] 插入 SQL Server VARBINARY 列 2021-01-01
- SQL 临时表问题 2022-01-01
- 更改自动增量起始编号? 2021-01-01
- 如何使用 pip 安装 Python MySQLdb 模块? 2021-01-01
- 远程 mySQL 连接抛出“无法使用旧的不安全身份验证连接到 MySQL 4.1+"来自 XAMPP 的错误 2022-01-01
- 导入具有可变标题的 Excel 文件 2021-01-01
