ランダムに終了するcursurに問題があります。要素ごとに行を作成したいので、要素ごとに2012年の毎月の行があります。特定の月に行が欠落している場合は、それも作成する必要があります。
現在、2057年まで毎月最後の要素の行を生成しています。
これで、2057年までの毎月まで、各要素の行があり、テーブル内の1つの要素のみがあります。
私のテーブルデザイン:
create table tblDataUpdateTest
(
slno int identity(1,1),
cName varchar(50),
cRemarks varchar(50),
[Date] date,
)
insert into tblDataUpdateTest (cName, cRemarks,[Date]) values ('name1','Text1','2012-01-01'),
('name2','Text2','2012-01-01')
私のコード:
declare @y as int
declare @d as int
SET @y = 2012
SET @d = 1
Declare @@counter int
Declare @@month int
set @@counter=0
Declare @@slno int
Declare @@cRemarks varchar(100)
Declare @@cName varchar(50)
Declare @@Date date
set @@month = 1
Declare tmepTbl cursor
For
Select slno,cName,cRemarks,date from tblDataUpdateTest
Open tmepTbl /* Opening the cursor */
fetch next from tmepTbl
into @@slno,@@cName,@@cRemarks,@@Date
while @@fetch_Status=-1
begin
if not exists (select cRemarks from tblDataUpdateTest where MONTH(Date) = @@month AND YEAR(Date) = 2012)
begin
insert into tblDataUpdateTest (cName, cRemarks,[Date]) values (@@cName,'s',(DateAdd(yy, 2012-1900,DateAdd(m, @@month - 1, 01 - 1))))
end
fetch next from tmepTbl
into @@slno,@@cName,@@cRemarks,@@Date
set @@month=@@month+1
end
close tmepTbl
Deallocate tmepTbl
今私のテーブル
cName cRemarks Date
name1 Text1 2012-01-01
name2 Text2 2012-01-01
私は次のことをしたい:
cName cRemarks Date
name1 Text1 2012-01-01
name1 Text1 2012-02-01
name1 Text1 2012-03-01
name2 Text2 2012-01-01
name2 Text2 2012-02-01
name2 Text2 2012-03-01
等々。
ありがとう!