select t.*, m.member_code as memberCode, m.member_name as memberName, v.VERTEX_NAME as vertexName, c.TEAM_NAME as teamName from cu_member_trade t left join cu_member m on t.pk_member = m.pk_id left join cu_member_team c ON c.pk_id = m.pk_team_code and c.del_flag = 0 left join bd_vertex v on v.pk_id = m.PK_VERTEX and v.del_flag = 0 t.del_flag='0' and t.pk_id in #{item} t.del_flag = 0 and m.member_name like #{memberName} || '%' and m.member_code like #{memberCode} || '%' and t.TRADE_AMOUNT = #{tradeAmount} and m.REMARKS like #{remarks} || '%' and t.PK_ACCOUNT = #{pkAccount} and t.TRADE_TYPE = #{tradeType} and t.SOURCE_CODE = #{sourceCode} and t.pk_country = #{pkCountry} and t.TRADE_CLASSIFY = #{tradeClassify} and t.CREATION_TIME >= to_date(#{startDate}, 'yyyy-mm-dd') and t.CREATION_TIME <= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss') and m.PK_VERTEX=#{vertexId} and m.pk_team_code=#{teamId} insert into CU_MEMBER_TRADE (PK_ID, PK_MEMBER, TRADE_CODE, PK_ACCOUNT, TRADE_TYPE, TRADE_CLASSIFY, PK_RATE, TRADE_AMOUNT, TRADE_BALANCE,TRADE_BEFORE_BALANCE, SOURCE_CODE, TRADE_STATUE, REMARKS, PK_COUNTRY, CREATION_TIME, PK_CREATOR) SELECT cu_member_trade_seq.nextval,t.* FROM ( SELECT #{item.pkMember},#{item.tradeCode},#{item.pkAccount},#{item.tradeType} ,#{item.tradeClassify},#{item.pkRate},#{item.tradeAmount},#{item.tradeBalance},#{item.tradeBeforeBalance} ,#{item.sourceCode, jdbcType=VARCHAR},#{item.tradeStatue}, #{item.remarks}, null, #{item.pkCountry},sysdate,#{item.pkCreator} FROM dual ) t update cu_member_trade t set t.source_code = #{sourceCode}, t.pk_modified = #{pkModified}, t.modified_time = sysdate where t.trade_code in #{item} merge into cu_member_trade a using ( select m.pk_id, m.pk_member, m.trade_code, m.pk_account, m.trade_type,m.trade_classify, m.pk_rate, m.trade_amount, (case when ba.field_value=4 then ca.account4 + m.trade_amount when ba.field_value=5 then ca.account5 + m.trade_amount when ba.field_value=8 then ca.account8 + m.trade_amount when ba.field_value=9 then ca.account9 + m.trade_amount else ca.account10 + m.trade_amount end) trade_balance, (case when ba.field_value=4 then ca.account4 when ba.field_value=5 then ca.account5 when ba.field_value=8 then ca.account8 when ba.field_value=9 then ca.account9 else ca.account10 end) trade_before_balance, m.source_code, m.trade_statue, m.remarks, m.pk_country, m.creation_time, m.pk_creator from( select #{item.pkId} pk_id,#{item.tradeCode} trade_code, #{item.tradeClassify} trade_classify, #{item.pkMember} pk_member,#{item.pkAccount} pk_account,#{item.pkRate} pk_rate,#{item.tradeAmount} trade_amount, #{item.sourceCode} source_code,#{item.tradeStatue} trade_statue,#{item.remarks} remarks, #{item.tradeType} trade_type,#{item.pkCountry} pk_country,#{item.pkCreator} pk_creator, #{item.creationTime} creation_time from dual ) m inner join cu_member_account ca on m.pk_member = ca.pk_member inner join bd_account ba on ba.pk_id = m.pk_account ) b on (a.pk_id = b.pk_id) when not matched then insert (pk_id, pk_member, trade_code, pk_account, trade_type, trade_classify, pk_rate, trade_amount, trade_balance,trade_before_balance, source_code, trade_statue, remarks, pk_country, creation_time, pk_creator) values(b.pk_id,b.pk_member,b.trade_code,b.pk_account,b.trade_type, b.trade_classify,b.pk_rate,b.trade_amount,b.trade_balance,b.trade_before_balance, b.source_code,b.trade_statue,b.remarks,b.pk_country,b.creation_time,b.pk_creator)