我正在使用oracle作为我的数据库。我想在基于表数据的sql查询中添加条件。在表中,如果CT_GENERAL为1,那么我想在我的sql查询中添加另一个条件。(CST_GENERAL = USER ARGUMENT)。
从ch_caseinfo中选择*,其中 ct_general = 1时的情况 然后cst_general =%3 结束
%3 =资金
//表结构 // CH_CASEINFO
VOLUMEID | 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-“缺少关键字”
答案 0 :(得分:0)
您需要形成where子句,以计算不希望包含过滤器(CT_GENERAL为0)时为真的表达式。考虑下面的示例,如果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