如下,表ly_aNUM REMARK
1 集团
1 用户
3 集团
做了以下操作后变为update ly_a a set a.re=(select b.re||a.re from ly_a b
where a.num=b.num and a.re='集团' and b.re='用户' )
where a.re='集团'NUM REMARK
1 用户集团
1 用户
3
第三行被清空了,我原本的意思是合并前两行数据为1行
即
NUM REMARK
1 集团用户
3 集团
1 集团
1 用户
3 集团
做了以下操作后变为update ly_a a set a.re=(select b.re||a.re from ly_a b
where a.num=b.num and a.re='集团' and b.re='用户' )
where a.re='集团'NUM REMARK
1 用户集团
1 用户
3
第三行被清空了,我原本的意思是合并前两行数据为1行
即
NUM REMARK
1 集团用户
3 集团
where a.num=b.num and a.re='集团' and b.re='用户' )
where a.num=1这样应该会出现3行
NUM REMARK
1 集团用户
1 集团用户
3 集团如果一定要合并的话,应该要删除重复记录或者INSERT到新表
select 1 NUM ,'集团' REMARK from dual
union
select 1 NUM ,'用户' REMARK from dual
union
select 3 NUM ,'集团' REMARK from dual
)select replace(wmsys.wm_concat(REMARK),',','') REMARK,NUM
from a
group by NUM
因为这个a.num=b.num,关联不上被置空了
分解我的sql语句
update ly_a a set a.re=(select b.re ¦ ¦a.re from ly_a b
where a.num=b.num and a.re='集团' and b.re='用户' )
where a.re='集团' 其中select b.re ¦ ¦a.re from ly_a b ,ly a
where a.num=b.num and a.re='集团' and b.re='用户'出来的应该是
B.REMARK||A.REMARK
用户集团再做update ly_a set a.re='用户集团' where a.re='集团'所以结果应该是
NUM REMARK
1 用户集团
1 用户
3 用户集团而不应该把第3行的re置空吧???
SET A.REMARK = (SELECT A.REMARK||B.REMARK
FROM LY_A B
WHERE A.NUM = B.NUM
AND A.REMARK = '集团'
AND B.REMARK = '用户')
WHERE A.REMARK = '集团'
AND EXISTS (SELECT 1
FROM LY_A B
WHERE A.NUM = B.NUM
AND A.REMARK = '集团'
AND B.REMARK = '用户');
这样写就对了
A B
1 集团 1 集团
1 用户 1 用户
3 集团 3 集团