1

假设,我有一列“Rate”,并且必须根据以下标准获取行。CHARS 下面只是列。

  1. 如果 X>Y 则获取 Rate
  2. 如果 A>B 那么
    • 如果 C>D 则获取 Rate
    • 如果 E>F 那么
      • 如果 G>H 则获取 Rate
      • 如果 I>J 则获取 Rate
      • 如果 K>L 则
        • if M>N THEN 获取率

我被困在,如何在 WHERE 子句中编写多级条件。

4

2 回答 2

4

我完全不确定我是否得到了正确的结果,但听起来你只是想在WHERE子句中结合多个条件:

WHERE
    X>Y OR
    (
       A>B AND
       (
          C>D OR
          (
              E>F AND
              (
                 G>H OR
                 I>J OR
                 (K>L AND M>N)
              )
          )
       )
    )

并非所有的括号都是绝对必要的,但我通常更喜欢使用它们而不是记住是否AND具有OR更高的优先级。

于 2013-08-14T07:38:55.800 回答
3

要将条件解析为 SQL,可以使用一组简单的两条规则:

  1. 将“then fetch Rate”更改为“OR (...)”
  2. 将“然后”更改为“AND (...)”

所以生成的 SQL 是这样的:

select Rate
  from ...
 where (X > Y) OR
          (A > B) AND 
            ((C > D) OR 
             (E > F) AND 
               ((G > H) OR 
                (I > J) OR 
                (K > L) AND 
                   (M > N)))
于 2013-08-14T07:41:42.720 回答