2017-06-15 5 views
-3

whileループを使用してSQL Developer 2012で可能にするにはどうすればよいですか?SQL ServerのWhileループを別の行に挿入する

値が1,000,000(100万)を超える場合は、複数の行に分割します。

たとえば、値が2,400,000の場合、下の表2に示すように、値が900,000,900,000、および600,000の3行になります。

表1

ID | Value 
1 | 200,000 
2 | 300,000 
3 | 1,000,000 
4 | 2,400,000 

表2

ID | Value 
1 | 200,000 
2 | 300,000 
3 | 1,000,000 
4 | 900,0000 
4 | 900,0000 
4 | 600,0000 
+0

あなたの質問には適用されないタグを使用しないでください。 –

+0

不明。どのような価値ですか?サンプルデータと必要な結果を表示します。 –

+0

番号は900 000、900 000、600 000はどこから来ていますか? –

答えて

0
if object_id('tempdb..#test','U') is not null 
    drop table #test 

create table #test (vals int) 
insert into #test values (600000),(800000), (2400000) 

declare @count int =0 -- psuedo group counter 
declare @i int -- used to contain current row value 

declare @prevval int -- used to step through values in table 
declare @more int = 1 -- used to create infinite while 

-- get the first value into @i 
select top 1 @i= vals from #test order by vals 

while @more = 1 
begin 
    set @prevval = @i 
    select @count += 1 
    while (@i - 900000)>0 
    begin 

     select @i -= 900000 
     select @count,900000 

    end 

     select @count, @i 

     select top 1 @i=vals 
     from #test 
     where vals > @prevval 
     order by vals 

     if @@rowcount =0 -- no more data... 
      break 
end 
関連する問題