当前位置: 代码迷 >> Sql Server >> sql难题
  详细解决方案

sql难题

热度:46   发布时间:2016-04-27 16:03:43.0
sql难题求助
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*/
  相关解决方案