2014-10-03 29 views
1

我承认,问题的标题很奇怪,但我不知道如何更好地表达它。根据数字生成相关记录的数量

我会尽力解释我需要什么。

我有一个包含定期检验的编号为合同表,合同开始日期

例如

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 

我可以用一个while循环的SP生成一个临时表,加入与主表,但我不知道是否有仅基于选择另一种方式。 (请忽略结果的检验开始日期列,这只是为了使结果更容易理解 - 什么,我需要的是前三栏实际上)

谢谢

+1

这个额外的列是如何使它更容易理解? – Paparazzi 2014-10-03 21:20:39

回答

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; 
相关问题