質問: @kaisu + 1 end fetch next from c_yotei into @yotei_id, @ninzu, @jishiday, @shiten end close c_yotei deallocate c_yotei /* ここからどのようにしたらよいでしょうか。。 */ select * from #tmp return ---- 上記のストアドからでも全く新しいアイデアでもかまいませんので皆様お知恵をお貸しください。 どうかよろしくお願いいたします。
回答: あ、ごめんなさい。 ano1のものです。 ミスしてます。 ano1では、 yotei_id jishi_day ninzu shiten shain_yotei_id shain_nam 5 2011/7/5 3 支店b null null ができてしまいます。 >insert into #tmp >select a.yotei_id,a.jishi_day,a.ninzu,a.shiten,b.shain_yotei_id,b.shain_nam >from tbl_yotei a,tbl_shain_yotei b where a.yotei_id = b.yotei_id > >を実行する。(shain_yotei_idとshain_namがnullでないレコードが格納される) まではいいのですが、 >select max(ninzu) from tbl_yotei >の値を取得する。 ここは、 select yotei_id,ninzu from tbl_yotei をカーソルで取得して、1件ずつ処理する必要があります。 > >while等を使って1から上で取得したmax(ninzu)まで以下のsqlを繰り返す。 >insert into #tmp >select a.yotei_id,a.jishi_day,a.ninzu,a.shiten,null,null >from tbl_yotei a >where (select count(*) from #temp b where b.yotei_id = a.yotei_id) < 繰り返しの値 これは、上で取得したレコード毎に繰り返し処理します。 ということで、 (元質問に書かれているのと同様に) declare c_yotei cursor for select yotei_id,ninzu from tbl_yotei open c_yotei fetch next from c_yotei into @yotei_id, @ninzu while @@fetch_status = 0 begin set @i = 1 while @i > @ninzu insert into #tmp select a.yotei_id,a.jishi_day,a.ninzu,a.shiten,null,null from tbl_yotei a where a.yotei_id = @wk_yotei_id and (select count(*) from #temp b where b.yotei_id = @wk_yotei_id) < @i set @i = @i + 1 end fetch next from c_yotei into @yotei_id, @ninzu end ということで。 (すいませんでした。)