row1 :0140010001 0140020010 0140030000 0140040000 0140050000 0240010000
row2 :014001000E 0140020001 0140030000 0140040000 0140050000 0240010000
上面的数据是一列,其中里面的字符串是由6位的id+4位的数字(16进制)组成,求对于每一个id(id不止这几个,但是每行固定)的数字总和。
比如:
id count
014001 15
014002 17
row2 :014001000E 0140020001 0140030000 0140040000 0140050000 0240010000
上面的数据是一列,其中里面的字符串是由6位的id+4位的数字(16进制)组成,求对于每一个id(id不止这几个,但是每行固定)的数字总和。
比如:
id count
014001 15
014002 17
是的话这样写倒是可以实现:SELECT ROW1 ID,COUNT(ROW1) COUNT FROM(
SELECT SUBSTR(ROW1,0,6) ROW1 FROM TABLE1
UNION ALL
SELECT SUBSTR(ROW2,0,6) ROW1 FROM TABLE1)
GROUP BY ROW1;
row2代表第二行
是举例有2行数据
数据都是一列。
写存储过程也可以。
select col_1 col from testtb_080215_1
union
select col_2 col from testtb_080215_1 )
group by substr(col,1,6)表就是按照你的ROW1,ROW2建立的,只统计了1,2两列,你自己可以仿照增加其他列,当然你也可以不用UNION而使用行转列的方法获取原始数据.
col1 为数据列的列名,即‘0140010001’所在列的列名
SQL语句如下:
select substr(col1, 1, 6) A,sum(to_number(substr(col1,7),'XXXX')) C
from AAA_TEMP
group by substr(col1, 1, 6);测试的数据就是你上面的12条数据,记过如下:A C
014001 15
014002 17
014003 0
014004 0
014005 0
024001 0
不知道这个结果你是否满意?