• 締切済み

マテリアライズドビューについての質問

オラクル初心者です。 データベースを構築するにあたってマテリアライズドビューを以下のようなロジックで作成しています。 SELECT A.a, A.b, CASE WHEN (A.c)-(A.d) AS sa その際、(A.c)-(A.d) の差の値によって saの値を変えたいと思っています。 具体的には、(A.c)-(A.d)の差が正の値であるなら、saにはその値を、 (A.c)-(A.d)の値が負の値なら、saには0を出力させたいと考えています。 CASE WHEN ( CASE WHEN (A.c)-(A.d) > 0 THEN … )AS saと書くと右()が足りないと怒られてしまおます。 この場合、どのようにロジックを書けばよいのでしょうか。 ご回答よろしくお願いします。

みんなの回答

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.2

CASE式で書くならば、 CASE WHEN A.c - A.d > 0 THEN A.c - A.d ELSE 0 END AS sa ですね。

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.1

こんにちわ。 > (A.c)-(A.d)の差が正の値であるなら、saにはその値を、 0 と差分値の大きい方と考えれば、Greatest((A.c - A.d), 0) as sa でどうでしょう?

関連するQ&A