这可以很容易地使用代码完成,但我想知道是否可以在数据库级使用SQL Server(2008)完成。使用SQL重复记录序列
我也有类似的表格下面:
CROP_ID YEAR_ PRODUCTION
1 1 0
1 2 300
1 3 500
2 1 100
2 2 700
我希望能够运行一个查询重复此为ň的年数,每种作物类型如
CROP_ID YEAR_ PRODUCTION
1 1 0
1 2 300
1 3 500
1 4 0
1 5 300
1 6 500
etc.
我不确定最好的方法,我认为我需要一个SP并传入一年变量,并使用循环结构?然而,确切的语法逃避我。任何帮助赞赏。
更新
对不起,在我原来的职位不提供的所有信息。该表将允许多种作物类型,并且可以更新Produciton值,以便使用固定变量的Case语句不太合适。道歉不清楚。
更新
随着TVF答案我用下面的修改SQL通过CropType 20年来选择。
select top 20 b.CROP_ID,
YEAR_ = n.num * (select count() from MyBaseTable where CROP_ID = 3) + b.YEAR,
b.PRODUCTION from MyBaseTable b, dbo.fnMakeNRows(20) n
where CROP_ID = 3
感谢您的回答。我以前没有使用过TVF,所以很好试用。第二个Select语句带回了我需要的结果。现在我只是坚持选择采取哪种方法! – geographika 2009-09-28 14:10:11
向表中添加第二种作物类型会扰乱年份,所以我修改了该陈述。 TOP关键字定义年数,因为YEAR_ <似乎不工作: select top 20 b.CROP_ID, YEAR_ = n.num *(从MyBaseTable中选择count(*),其中CROP_ID = 3)+ b.YEAR_, b.PRODUCTION from MyBaseTable b,dbo.fnMakeNRows(20)n 其中CROP_ID = 3 – geographika 2009-09-28 14:30:19