统计不连续卡号问题
数据库中有一批卡,怎样统计出每种卡的起止卡号,比如
卡种类 面值 卡号
===========================
电费卡 50 00111111
电费卡 50 00111112
电费卡 50 00111113
电费卡 50 00111114
移动卡 50 10111110
移动卡 50 10111111
移动卡 50 10111112
移动卡 50 10111113
电费卡 100 0110111112
电费卡 100 0110111113
电费卡 100 0110111114
期望得到的结果:
卡种类 面值 张数 开始卡号 结束卡号
===========================================
电费卡 50 4 00111111 00111114
电费卡 100 3 0110111113 0110111114
移动卡 50 4 10111110 10111113
[解决办法]
select 卡种类 ,面值 ,count(1) 张数 ,min(卡号) 开始卡号 ,max(卡号) 结束卡号 group by 卡种类 ,面值
[解决办法]
create table tb(卡种类 varchar(10),面值 int,卡号 varchar(20))insert into tb values('电费卡' ,50 ,'00111111')insert into tb values('电费卡' ,50 ,'00111112')insert into tb values('电费卡' ,50 ,'00111113')insert into tb values('电费卡' ,50 ,'00111114')insert into tb values('移动卡' ,50 ,'10111110')insert into tb values('移动卡' ,50 ,'10111111')insert into tb values('移动卡' ,50 ,'10111112')insert into tb values('移动卡' ,50 ,'10111113')insert into tb values('电费卡' ,100 ,'0110111112')insert into tb values('电费卡' ,100 ,'0110111113')insert into tb values('电费卡' ,100 ,'0110111114')goselect 卡种类 ,面值 ,count(1) 张数 ,min(卡号) 开始卡号 ,max(卡号) 结束卡号 from tb group by 卡种类 ,面值drop table tb/*卡种类 面值 张数 开始卡号 结束卡号 ---------- ----------- ----------- -------------------- -------------------- 电费卡 50 4 00111111 00111114移动卡 50 4 10111110 10111113电费卡 100 3 0110111112 0110111114(所影响的行数为 3 行)*/