将行拆分为多行,然后折回值

时间:2014-07-30 14:13:01

标签: sql sql-server

好的 - 我有一张桌子 - 我可以在这里有一个包含多个量子的行 - 我需要做的是在有数量的情况下获取所有行> 1 - 创建多行 - 每个数量一个 - 对每一行执行一个简单的计算 - 比如将val字段乘以2 - 然后将行回滚到​​另一个临时表或其他东西......?

    DECLARE @table TABLE (id int IDENTITY(1,1),
    code varchar(10), 
    codeStatus varchar, 
    qty int, 
    val money)
        INSERT INTO @table 
   SELECT 
   '12345', 
   'T',
    2,
    1

1 个答案:

答案 0 :(得分:0)

数字表是你的朋友。

对数字表的连接有效地执行了扩展。下面的代码基本上只是问题的“扩展”部分。在此之后,应用您需要的任何转换都是微不足道的,请进入临时表等等。

/*
--create numbers table if don't already have one...
select top 1000000 row_number() over(order by t1.number) as N
into dbo.Numbers
from   master..spt_values t1 
       cross join master..spt_values t2
*/

DECLARE @table TABLE (id int IDENTITY(1,1),code varchar(10), codeStatus varchar, qty int, val money)
INSERT INTO @table SELECT '12345', 'T', 2, 1

select t.id, t.code, t.codeStatus, t.qty, t.val
from @table t
     inner join dbo.Numbers n on n.N <= t.qty