2016-06-20 8 views
-2
SELECT CASE 
     WHEN vGlTransType = 'R' THEN tkt_seq_num 
     WHEN vGlTransType in ('A','E','X') then 
     break 
    END 
+2

なぜ壊れたくありますか?何が起こるはずですか? – sagi

+0

最初のケースが満たされない場合、私は値を必要としません、私はちょうどループを終了したいと私によると、最初の条件が満たされていない場合は、デフォルトではnullをとっています。 –

+0

フィルター 'WHERE vGlTransTypeを(' A '、' E '、' X ') 'に追加しないのはなぜですか? – sagi

答えて

0

アレックスが言及したような他の条件は、あなたがELSEをしたい、

0

満たさない場合はnull値を返すためにEND前CASE 使用ELSE

ヌル

にはループが存在しない:

SELECT CASE WHEN vGlTransType = 'R' THEN tkt_seq_num 
      ELSE NULL 
     END 

ELSE NULLはデフォルトのbtwです。つまり、スキップすることができます:

SELECT CASE WHEN vGlTransType = 'R' THEN tkt_seq_num 
     END 

間違った語彙を使用するため、多くの否定的な回答があります。

SQLは宣言型言語である:それは不可欠のプログラムのためにする場合のような プログラムの流れを制御することはできません私はarticle I wrote on CASEを引用してみましょう。それにもかかわらず、SQL には似たようなものがあります。コントロール構造よりも という表現であることは、条件に基づいて式 (式)の結果が異なることを意味します。その使用法は、他のプログラミング言語の三次 演算子?:に似ています。

あなたの質問は、あなたがSQLのCASEは、CのSWITCH(プラスCASE)に似ていると思うことを示唆しています。しかし、そうではありません。

関連する問題