這可以很容易地使用代碼完成,但我想知道是否可以在數據庫級使用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