分裂

2017-09-26 101 views
1

我想创建SQL查询到单个列的值分成像多行表中的值,并存储: 我有两个值,其分割并从存储在表至b分裂

create table #density(density decimal (15,2),value decimal (15,2)) 

declare @a decimal (15,2), 
     @b  decimal (15,2), 
     @karats   decimal (15,2) 


set @a='19.99' 
set @b='20.02' 
set @karats='24.00' 


expected result-- 
density  value 
19.99   24 
20.00   24 
20.01   24 
20.02   24 

回答

1

您可以使用递归CTE:

with cte as (
     select @a a density 
     union all 
     select cast(density + 0.01 as decimal(15,2)) 
     from cte 
     where density < @b 
    ) 
insert into #density (density, value) 
    select density, @karats 
    from cte; 

注意:如果您有超过100行要插入,则需要研究最大递归选项。

你也可以用“数字”表做类似的事情。

+0

你能写没有CTC的查询吗? – Rojelo

+0

@Rojelo。 。 。您可以使用数字表格。对于少量的行,递归CTE很容易。 –