sql – 创建带数字范围的临时表

前端之家收集整理的这篇文章主要介绍了sql – 创建带数字范围的临时表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个表格,其中有一行的开始和结束编号范围,例如
  1. key startID endID
  2. 1 500 505
  3. 2 784 788
  4. 3 802 804

等等..

我想创建一个临时表(或表变量/ cte等),它们为每个这些数字和它们之间覆盖的范围有一行 – 即给出上面的示例,我想看到一个具有以下行的表:

  1. ID
  2. 500
  3. 501
  4. 502
  5. 503
  6. 504
  7. 505
  8. 784
  9. 785
  10. 786
  11. 787
  12. 788
  13. 802
  14. 803
  15. 804

任何人都可以指出方向快捷方便吗?我想到使用数字表不知何故,但我正在看的表有> 200米行,我没有数字表大!

任何帮助深表感谢.提前致谢.

解决方法

  1. WITH q AS
  2. (
  3. SELECT startId,endId
  4. FROM ranges
  5. UNION ALL
  6. SELECT startId + 1,endId
  7. FROM q
  8. WHERE startId < endId
  9. )
  10. SELECT startId
  11. FROM q
  12. OPTION (MAXRECURSION 0)

猜你在找的MsSQL相关文章