我承认,问题的标题很奇怪,但我不知道如何更好地表达它。
我会尝试解释我的需要。
我有一张表,其中包含合同的预定检查次数和合同开始日期
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。 (请忽略结果中的检查开始日期列,这只是为了让结果更容易理解 - 我需要的是实际的前三列)
谢谢
答案 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;