现在有这么一条sql
select id,......
group by id现在是数据库里的新旧数据有冲突,
id 的值有000011跟11这样的区别,旧的数据该属性有补零,新的数据没有。
然后现在000011跟11其实是同一组数据,需要进行合计等计算,这样需要怎样改呢?
select ltrim(id, '0')....
这样倒是去掉0了,可是依旧分不了组,要怎么弄呢?
select id,......
group by id现在是数据库里的新旧数据有冲突,
id 的值有000011跟11这样的区别,旧的数据该属性有补零,新的数据没有。
然后现在000011跟11其实是同一组数据,需要进行合计等计算,这样需要怎样改呢?
select ltrim(id, '0')....
这样倒是去掉0了,可是依旧分不了组,要怎么弄呢?
LPAD('123',10,'0')
------------------
0000000123
SQL>
group by lpad(id,6,'0')
group by lpad(id,6,'0');
select '000011' id,12 kk from dual
union all
select '11' id,23 kk from dual
union all
select '000022' id,34 kk from dual
union all
select '22' id,44 kk from dual
)
select sum(kk),trim(translate(id,'0',' ')) from temp group by trim(translate(id,'0',' '))
我一开始以为是这样写法不行,现在看原来是可以的。
刚又看了下表,id是char型的
我这还要加个trim再进行分组才行,哎
估计是变长引起的空格的问题
update tb set id=replace(id,' ','')
alter table tb modify id varchar2(6)--改为变长的
在使用select ltrim(id, '0').... 或者lpad(id,6,'0')
应该是可以的