2016-11-27 11 views
0

以下は、より大きいクエリの一部であるCTEです。私は単純なものを試してみようとしています: '2016-11'または '2016-12'の値を '2016-10'で更新または置き換えてください。共通テーブルでの更新の使用式

クエリはUPDATEでエラーになります。ここでは、このクエリを動作させる代替手段がありますか?

with q (month, cobrand, members) as 
(select date_trunc('month',optimized_transaction_date), cobrand_id, 
count(distinct unique_mem_id) 
from yi_fourmpanel.card_panel 
Where (cobrand_id = '10001372' or cobrand_id = '10005640' or cobrand_id = '10005244') 
group by 1,2) 

UPDATE q 
SET members = dc 
FROM (SELECT cobrand, members dc 
     FROM q 
     WHERE month = '2016-10') x 
WHERE q.cobrand = x.cobrand 
AND month IN ('2016-11', '2016-12') 
+0

注意を。ありがとうございました。 – ZJAY

答えて

0

テーブルデータを変更しない場合は、UPDATEを使用しないでください。

これに似たメインクエリ書き、あなたが何をしたい達成するために:私はによって凝集/グループに値を挿入しようとしているが、出力の記録を置き換えるわけではない

WITH q(month, cobrand, members) AS (...) 
SELECT 
    month, 
    cobrand, 
    CASE WHEN month IN ('2016-11', '2016-12') 
     THEN (SELECT members 
       FROM q q1 
       WHERE q1.month = '2016-10') 
     ELSE members 
    END 
FROM q; 
+0

お返事ありがとうございます。あなたのコードを実装しようとして1時間以上を費やしましたが、失敗しました。私が上で共有した入力を使用してこのコードを実装する方法を示してもらえますか? 2016-11と2016-12については2016-10の結果を使用したかったので、元々はUpdateを使用していたことに留意してください。 – ZJAY

+0

省略記号(...)をCTEに置き換えた場合、私のクエリは私が書いたとおりに機能します。エラーが発生した場合は、それを共有してください。私はあなたがデータやテーブル構造を共有しなかったので、試してみることはできません。 –

関連する問題