num d t(单位为秒) start end
2 4 33 08:46:33 08:48:45
8 2 30 08:57:18 08:58:19
11 5 27 09:01:00 09:03:17
12 2 35 09:04:08 09:05:18
13 5 27 09:05:30 09:07:49
如上表,将第一行的数据扩展成d(4)行,形成新的四行的表如下
num d t(单位为秒) start end
2 4 33 08:46:33+33秒 08:48:45+33秒
2 3 33 08:46:33+2*33秒 08:48:45+2*33秒
2 2 33 08:46:33+3*33秒 08:48:45+3*33秒
2 1 33 08:46:33+4*33秒 08:48:45+4*33秒
之后,如此类推,再将下面的数据根据d,扩展成相应的d行
------解决方案--------------------
- SQL code
use Tempdbgo--> --> if not object_id(N'Tempdb..#T') is null drop table #TGoCreate table #T([num] int,[d] int,[t] int,[start] Datetime,[end] Datetime)Insert #Tselect 2,4,33,'08:46:33','08:48:45' union allselect 8,2,30,'08:57:18','08:58:19' union allselect 11,5,27,'09:01:00','09:03:17' union allselect 12,2,35,'09:04:08','09:05:18' union allselect 13,5,27,'09:05:30','09:07:49'GoSelect a.[num],[d]-b.number AS d,a.[t],CONVERT(VARCHAR(8),DATEADD(s,33,[start]),8) AS [start],CONVERT(VARCHAR(8),DATEADD(s,33,[end]),8) AS [end]from #T AS a,master.dbo.spt_values AS b WHERE a.d>b.number AND b.type='P'/*num d t start end2 4 33 08:47:06 08:49:182 3 33 08:47:06 08:49:182 2 33 08:47:06 08:49:182 1 33 08:47:06 08:49:188 2 30 08:57:51 08:58:528 1 30 08:57:51 08:58:5211 5 27 09:01:33 09:03:5011 4 27 09:01:33 09:03:5011 3 27 09:01:33 09:03:5011 2 27 09:01:33 09:03:5011 1 27 09:01:33 09:03:5012 2 35 09:04:41 09:05:5112 1 35 09:04:41 09:05:5113 5 27 09:06:03 09:08:2213 4 27 09:06:03 09:08:2213 3 27 09:06:03 09:08:2213 2 27 09:06:03 09:08:2213 1 27 09:06:03 09:08:22*/