SQL:将具有开始/结束的行扩展为单独的行

2024-02-20

我有这样的记录:

start, end , total  
 830 , 1300,   5
 1400, 1430,   2

我想扩展到:

instance , total  
  830    ,   5
  831    ,   5
  832    ,   5
  ...
  1299   ,   5
  1300   ,   5

  1400   ,   2
  1401   ,   2
  ...
  1429   ,   2
  1430   ,   2

如何使用 MSSQL 2005 中的 SQL 来执行此操作?

编辑:谢谢大家,很好的答案。有几个去上班了我只是忘了说,虽然开始/结束实际上是存储为 int 的时间,所以 0830 到 1300 应该达到 0859,然后是 0900。我不能指望你们在同一个问题中回答这个问题,我会努力的周围。再次感谢


使用 CTE:

with number_cte(n) as 
 (select n from (select 0 n) m union all select n+1 n
  from number_cte where n< 2400)
select start+n instance, total
from 
datatable
join number_cte on start+n between start and [end]
where start+n - 100*floor((start+n)/100) between 0 and 59
order by 1
option (maxrecursion 2401)

(如果需要的范围大于 2400,则适当增加 n

进行编辑以防止包含无效的实例(即结束于 60 到 99 之间的时间值)值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL:将具有开始/结束的行扩展为单独的行 的相关文章

随机推荐