根据数字生成相关记录的数量

时间:2014-10-03 21:08:36

标签: sql sql-server tsql

我承认,问题的标题很奇怪,但我不知道如何更好地表达它。

我会尝试解释我的需要。

我有一张表,其中包含合同的预定检查次数和合同开始日期

e.g。

ContractID    Start Date     No. Inspections
     1         2014/1/1             4
     2         2014/1/1             3

我需要的是创建一个选择,为每个预定的检查及其预定的开始日期返回一行,例如:

ContractID    Start Date     Inspection No     Inspection Start date
     1         2014/1/1             1              2014/1/1
     1         2014/1/1             2              2014/1/3
     1         2014/1/1             3              2014/1/6
     1         2014/1/1             4              2014/1/9
     2         2014/1/1             1              2014/1/1
     2         2014/1/1             2              2014/1/4
     2         2014/1/1             3              2014/1/8

我可以在SP中使用while循环来生成临时表以与主表连接,但我想知道是否还有另一种方法仅基于select。 (请忽略结果中的检查开始日期列,这只是为了让结果更容易理解 - 我需要的是实际的前三列)

谢谢

1 个答案:

答案 0 :(得分:3)

如果数字永远不会太大,您可以使用master.spt_values

select t.contractid, t.startdate, n.number as inspectionnum
from table t join
     master.spt_values n
     on n.number <= t.numinspections;