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

解决方案 »

  1.   

    没太明白,是不是ROW1和ROW2是一个表中的两列,要找出这两列中所有的ID和相同ID的总和?
    是的话这样写倒是可以实现: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;
      

  2.   

    row1代表第一行
    row2代表第二行
    是举例有2行数据
    数据都是一列。
    写存储过程也可以。
      

  3.   

    select substr(col,1,6),sum(to_number(substr(col,7,4),'XXXX')) from (
    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而使用行转列的方法获取原始数据.
      

  4.   

    下面这段代码可以实现你的功能,比3楼的要简单一些 【我在我们的测试数据库中测试过了的】AAA_TEMP   为数据表的名(tablename)
    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
    不知道这个结果你是否满意?