数据表如下
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
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
select distinct regexp_substr(sku, '[^-]+', 1,1) sku ,
regexp_substr(sku, '[^/]+', 1,2) cnt
from test_a
order by sku
啥意思?
有个的sku,便有1/4
个数。
实际上取出"/"后面的数字就可以了。
应该是这样的。
兰兰,你有没有测试一番?我只有mysql环境
貌似不大对 /前面也可能出现几十几百吧 还是要获取-前面的数字 然后获取/后面的数字select distinct substr(sku,0,INSTR(sku,'-',1,1)-1),substr(sku,INSTR(sku,'/',1,1)-length(sku)) from tb1
(
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');
测试结果:
from label lb
left join data sk
on lb.sku=regexp_substr(sk.sku,'[^-]+',1,1)
group by lb.sku
order by lb.sku;