【问题标题】:SQL Server While Loop Insert into different linesSQL Server While循环插入不同的行
【发布时间】:2017-11-17 22:18:53
【问题描述】:

如何使用 while 循环在 SQL Developer 2012 中实现?

如果一个值大于 1,000,000(一百万),则将其分成几行。

例如,如果值为 2,400,000,它将分三行,分别为 900,000、900,000 和 600,000,如下表 2 所示。

表 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

【问题讨论】:

  • 请不要使用不适用于您的问题的标签。
  • 不清楚。什么价值?显示示例数据和所需结果。
  • 数字 900 000 、 900 000 和 600 000 是从哪里来的?
  • 从240万分成3行
  • 根据什么拆分?为什么不是 1m+1m+0.4m = 2.4m?请编辑您的问题以提供更多信息。

标签: sql-server while-loop


【解决方案1】:
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

【讨论】:

    猜你喜欢
    • 2020-03-01
    • 2012-03-24
    • 2018-10-28
    • 1970-01-01
    • 2011-05-28
    • 2018-02-12
    • 2019-08-12
    • 2018-06-20
    • 2022-01-07
    相关资源
    最近更新 更多