1

私は自分に似た多くの質問を検索して見つけましたが、解決策はどれもうまくいきません。これはOracleにあります。バージョンはわかりません(SQL Developerからのみアクセスします)。私は2つのテーブルを持っています(無関係な列は省略されています):

describe t_points_receipt
Name              Null     Type          
----------------- -------- ------------- 
USER_ID           NOT NULL NUMBER(9)     
PROMOTION_ID      NOT NULL NUMBER(9)     
AMOUNT            NOT NULL NUMBER(9,2)   

describe t_user_promotion_points
Name         Null     Type        
------------ -------- ----------- 
USER_ID      NOT NULL NUMBER(9)   
PROMOTION_ID NOT NULL NUMBER(9)   
TOTAL_POINTS          NUMBER(9,2) 

そして、私はこのクエリを持っています:

select user_id, promotion_id, sum(amount) from t_points_receipt
 where promotion_id = 10340 group by user_id, promotion_id;

私がしたいのは、t_user_promotion_points.user_id = (results).user_id および t_user_promotion_points.promotion_id = (results).promotion_id の結果から、t_user_promotion_points を sum(amount) で更新することです。これを行う方法はありますか?

4

2 に答える 2

2
update t_user_promotion_points p
set total_points = select sum(amount) from t_points_receipt r
on p.user_id = r.user_id 
where r.promotion_id = 10340 and
where t.promotion_id = 10340
于 2012-10-19T23:35:49.537 に答える
1

設定する値の相関サブクエリを作成できます。

update t_user_promotion_points p
set total_points = (select sum(amount) from t_points_receipt r where p.user_id = r.user_id and p.promotion_id = r.promotion_id)
where p.promotion_id = 10340;
于 2012-10-19T23:48:59.970 に答える