SQL查询中根据表值添加条件
Posted
技术标签:
【中文标题】SQL查询中根据表值添加条件【英文标题】:Add condition in SQL query based on table value 【发布时间】:2019-06-03 15:42:24 【问题描述】:我使用 oracle 作为我的数据库。我想在基于表数据的 sql 查询中添加条件。在表中,如果 CT_GENERAL 为 1,那么我想在我的 sql 查询中添加另一个条件。(CST_GENERAL = USER ARGUMENT)。
从 ch_caseinfo 中选择 * 其中 ct_general = 1 时的情况 然后 cst_general = %3 结束
%3 = 资金
//表结构 //CH_CASEINFO
音量 ID | CT_ADVERSE | CT_GENERAL | CT_HA | CT_MI | CST_GENERAL | CST_MI
149634 0 0 0 0
161077 0 0 0 0
161147 0 1 0 1 Funding Composition/ingredients
161268 0 1 0 0 Funding
161306 0 1 0 0 Manufacturing
240131 0 1 1 0 Funding
239364 0 0 0 0
239364 0 0 0 0
147434 0 0 0 0
147466 0 0 0 0
158990 0 1 0 1 Funding Administration
98863 1 1 1 1 Funding Disposal
159757 1 1 1 1 Funding Disposal
98863
191039 1 1 0 0 Other
97007 0 0 0 0
ORA-00905: 缺少关键字 00905. 00000 - “缺少关键字”
【问题讨论】:
【参考方案1】:当您不想包含过滤器(CT_GENERAL 为 0)时,您需要形成 where 子句来评估为真的表达式。考虑下面的示例,如果 ct_general = 0,则 cst_general 将始终等于 cst_general(除非 null -- 如果有可能,则需要容纳 null)。
SELECT *
FROM ch_caseinfo
WHERE CASE WHEN ct_general = 0 THEN cst_general ELSE USERARGUMENT END = cst_general
AND OTHERCRITERIA = CRITERIA
【讨论】:
以上是关于SQL查询中根据表值添加条件的主要内容,如果未能解决你的问题,请参考以下文章
在 T-SQL 查询的 SELECT 子句中使用表值函数的“语法不正确”