分裂

2017-09-26 106 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很容易。 –