2016-09-29 12 views
1

文のcase文に基づいて2列の値を変更する方法を探しています。oracle sqlのcase文を使用して2列の値を変更する方法

テーブルデータの一例は以下の通りです(ライブデータは、私が持って来るだけで、このコラム持っている約60の列があります。

QUEUE | NOTES 
12345 | Lorem 
12345 | ipsum 
45678 | dolor 
78901 | sit 
9| amet 

今私は私の最初の部分を与える次のクエリを書かれています:私が着手する必要がある

SELECT 
    CASE 
    WHEN SUBSTR (QUEUE, 1, 2) = '12' 
    THEN 'Abandoned' 
    ELSE QUEUE 
    END AS QUEUE, 
    NOTES 
FROM 
    TABLE_1 
; 

第二のステップは、最初のcase文に基づいています。キューフィールドは放棄されたキューを持っている場合、私はテキストは「ユーザーAN 29.09によって改正キューを言ってメモフィールドを交換する必要があります。 16 'しかし、私はこれをやってどうやって行くのか分かりません。

私はサブ選択クエリでそれを書くことができると推測していますが、もう一度私はどのようにターゲットを1つの値が等しい場合、別の列の値を置き換えるかわからない。また、1つのケースステートメント内にすべてを書くことが可能かどうかを知りたい場合...

誰かが助言してくれる場合は、

おかげ

+0

ケース式ではなく、ケース式です。 – jarlh

答えて

0

ユースケース注列の表現だけでなく

SELECT 
    CASE 
    WHEN SUBSTR (QUEUE, 1, 2) = '12' 
    THEN 'Abandoned' 
    ELSE QUEUE 
    END AS QUEUE, 
    CASE 
    WHEN SUBSTR (QUEUE, 1, 2) = '12' 
    THEN 'Queue Amended by User AN 29.09.16' 
    ELSE NOTES 
    END AS Notes 
FROM 
TABLE_1 
+0

Thanks Jaydip、Notesフィールドの既存のメモを 'Queue Amended by User AN 29.09.16'で上書きするか、またはNotesフィールドを含む別の列を追加するかどうかを明確にするだけですか? – user3191160

+0

キューが破棄されたときにのみ、Noteが指定された文字列owで置き換えられます。同じ列にある内容をNotesに与えます。 –

0

あなたが実際に根本的にtable_1を更新するだけで、あなただけのためのcase文を繰り返す必要があり、結果を提示したくないと仮定すると、第二カラム:

SELECT 
    (CASE 
    WHEN SUBSTR (QUEUE, 1, 2) = '12' 
    THEN 'Abandoned' 
    ELSE QUEUE 
    END) AS QUEUE, 

    (CASE 
    WHEN SUBSTR (QUEUE, 1, 2) = '12' 
    THEN 'Queue Amended by User ' ||user ||' '|| to_char(sysdate, 'DD.MM.RRRR') 
    ELSE NOTES 
    END) AS NOTES 
FROM table_1 
+0

ありがとうございます。テーブルを更新するルートを守る必要があると思います他の誰かがテーブルを使用する場合、この情報はすぐに利用できるということです。また、私はJaydipのクエリーを試してみましたが、すでにselect *を持っているのでメモフィールドを持っているので、元のメモフィールドとしてあいまいに定義されています。 .. – user3191160

0

あなたは、列queueとでtable_1と呼ばれるテーブルを持っている場合をサンプル入力の現在の値で置き換えてください。記述したようにテーブルを更新する必要があります。簡単です(「case」式は必要ありません)。

update table_1 
    set queue = 'Abandoned', 
     notes = 'Queue Amended by User AN 09.29.16' 
where queue like '12%' 
; 

(または、NOTESの値は、Userおよび/またはDateの変数と連結することができます.Eninisがそのソリューションに表示しています)。「好き」の条件では、 queueの列にある。それにはsubstr()を使用してください。

関連する問題