【问题标题】:oracle case statement return multiple characteroracle case语句返回多个字符
【发布时间】:2015-07-24 15:01:09
【问题描述】:

您好,请更正我的问题


select * from table S1
WHERE  S1.stu ='12345'
AND S1.sem = (Select Case When col2 > col4 Then col2 Else col4 End From table2)
And S1.met1 in  (case when (S1.sem = 1) then ('1', 'D', 'F' )
                      when (S1.sem = 2) then ('1', '5', '7',  )
                      when (S1.sem = 3) then ('1',  'D', 'F' )
                      else s1.sem end);

应该使用大小写,因为它与表联合。 我得到了

错误:缺少关键字

对于这个查询

【问题讨论】:

  • 您的预期结果是什么?或者 wat 是查询中的错误..您需要向您的问题添加更多信息

标签: sql oracle case


【解决方案1】:

case 不是这样工作的。它是一个标量表达式,只返回一个值。

用基本逻辑代替:

where ( (S1.sem = 1 and s1.met1 in ('1', 'D', 'F' ) ) or
        (S1.sem = 2 and S1.met1 in ('1', '5', '7') ) or
        (S1.sem = 3 and s1.met1 in ('1', 'D', 'F' ) ) or
        (s1.sem not in (1, 2, 3) and s1.met1 = s1.sem)
      )

我会评论说,根据您使用的值,s1.sem 似乎是一个数字,s1.met1 是一个字符。对我来说,将数字与字符串进行比较是非常可疑的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 2020-10-14
    相关资源
    最近更新 更多