数据表如下
data(sku的个数与后面的分数,是对应严格的)
id sku
1  34-1/2
2  34-2/2
3  39-1/4
4 39-2/4
5 39-3/4label
id sku
1 34
2 39
现在是要求出这个来
sku sku个数
34  2
39  4

解决方案 »

  1.   

    把表名test_a换成你自己的表名:
    select distinct regexp_substr(sku, '[^-]+', 1,1) sku , 
    regexp_substr(sku, '[^/]+', 1,2) cnt
    from test_a
    order by sku
      

  2.   

    --sku的个数与后面的分数,是对应严格的)
    啥意思?
      

  3.   


    有个的sku,便有1/4
    个数。
      

  4.   

    实际就是"/"后面的数字是几,这个sku就有几条数据。。
    实际上取出"/"后面的数字就可以了。
    应该是这样的。
      

  5.   


    兰兰,你有没有测试一番?我只有mysql环境
      

  6.   

    这个也可以通过截取来统计吧select distinct substr(sku,0,2),substr(sku,6,length(sku)-6) from tb1
      

  7.   

     
      貌似不大对 /前面也可能出现几十几百吧  还是要获取-前面的数字 然后获取/后面的数字select distinct substr(sku,0,INSTR(sku,'-',1,1)-1),substr(sku,INSTR(sku,'/',1,1)-length(sku)) from tb1
      

  8.   

    测试数据:CREATE TABLE T106
    (
        ID NUMBER(4),
        Sku VARCHAR2(20)
    );INSERT INTO T106 VALUES(1, '34-1/2');
    INSERT INTO T106 VALUES(2, '34-2/2');
    INSERT INTO T106 VALUES(3, '39-1/4');
    INSERT INTO T106 VALUES(4, '39-2/4');
    INSERT INTO T106 VALUES(5, '39-3/4');
    INSERT INTO T106 VALUES(6, '39-4/4');
    INSERT INTO T106 VALUES(7, '40-1/1');
    测试结果:
      

  9.   

    都贴截取"/"后面的,那我就上个常规路线的吧select lb.sku,count(lb.sku) 
    from label lb 
    left join data sk 
    on lb.sku=regexp_substr(sk.sku,'[^-]+',1,1)
    group by lb.sku
    order by lb.sku;