当前位置: 代码迷 >> Sql Server >> []流水号按条件分组,想了几天也不明白
  详细解决方案

[]流水号按条件分组,想了几天也不明白

热度:100   发布时间:2016-04-24 10:33:53.0
[求助]流水号按条件分组,想了几天也不明白
现有数据:
machinename labeldate                        printdate          serialnumber
5RS092ZAD210000 2014-05-21 2014-05-21 1
5RS092ZAD210000 2014-05-21 2014-05-21 2
5RS092ZAD210000 2014-05-21 2014-05-21 3
5RS092ZAD210000 2014-05-21 2014-05-21 4
5RS092ZAD210000 2014-05-21 2014-05-21 5
5RS092ZAD210000 2014-05-21 2014-05-21 6
5RS092ZAD210000 2014-05-21 2014-05-21 7
5RS092ZAD210000 2014-05-21 2014-05-21 8
5RS092ZAD210000 2014-05-21 2014-05-21 10
5RS092ZAD210000 2014-05-21 2014-05-21 11
5RS092ZAD210000 2014-05-21 2014-05-21 12
5RS092ZAD210000 2014-05-21 2014-05-21 9
5RS092ZAD210000 2014-05-21 2014-05-21 13
5RS092ZAD210000 2014-05-21 2014-05-21 14
5RS092ZAD210000 2014-05-21 2014-05-21 15
5RS092ZAD210000 2014-05-21 2014-05-21 16
5RS092ZAD210000 2014-05-21 2014-05-21 17
5RS092ZAD210000 2014-05-22 2014-05-22 18
5RS092ZAD210000 2014-05-22 2014-05-22 19
5RS092ZAD210000 2014-05-22 2014-05-22 20
5RS092ZAD210000 2014-05-22 2014-05-22 21
5RS092ZAD210000 2014-05-22 2014-05-22 22
5RS092ZAD210000 2014-05-21 2014-05-21 23
5RS092ZAD210000 2014-05-21 2014-05-21 24
5RS092ZAD210000 2014-05-21 2014-05-21 25
5RS092ZAD210000 2014-05-21 2014-05-21 26
5RS092ZAD210000 2014-05-21 2014-05-21 27
5RS092ZAD210000 2014-05-21 2014-05-21 28

要把数据分组为以下形式:
machinename labeldate                      begin                 end         count
5RS092ZAD210000 2014-05-21                      1                         17                    17
5RS092ZAD210000 2014-05-22                      18                       22                    5
5RS092ZAD210000 2014-05-21                      23                       28                    6

machinename为物品号,labeldate为标签日期, printdate打印日期,serialnumber流水号
要求用sql语句或存储过程做
求各位大神多多帮助,谢谢

------解决方案--------------------
间断或者孤岛问题 去搜索下吧。
------解决方案--------------------

create table test (machinename varchar(20),labeldate datetime,printdate datetime,serialnumber int)
insert test 
select '5RS092ZAD210000','2014-05-21','2014-05-21',1 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',2 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',3 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',4 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',5 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',6 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',7 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',8 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',10 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',11 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',12 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',9 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',13 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',14 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',15 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',16 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',17 union all
select '5RS092ZAD210000','2014-05-22','2014-05-22',18 union all
select '5RS092ZAD210000','2014-05-22','2014-05-22',19 union all
select '5RS092ZAD210000','2014-05-22','2014-05-22',20 union all
select '5RS092ZAD210000','2014-05-22','2014-05-22',21 union all
select '5RS092ZAD210000','2014-05-22','2014-05-22',22 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',23 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',24 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',25 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',26 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',27 union all
select '5RS092ZAD210000','2014-05-21','2014-05-21',28 

with a as (
select machinename,labeldate,serialnumber,
  相关解决方案