SQL查询输出:根据字段值插入一行

时间:2015-08-05 08:01:09

标签: sql insert row toad

我正在忙着处理由excel处理并使用单词序列字母打印的一些SQl查询。这是在学校为水果制作送货单。 80儿童意味着80份水果,这适合放入一个箱子。因此,对于80多名儿童,我们需要2个箱子,依此类推。此时最大值为240个儿童,因此有3个箱子。进行计算是没有问题的,但是制作额外的线是。去年我在excel中做了静态但是今年有更多的学校这么多的数据。因此,我只想要一个地方来改变它,这就是SQL数据库。

数据如下所示:

Customer     Children
ABC             240
DEF             37
GHI             90

它应该在输出中看起来像这样:

Customer     Children    Crates
ABC             240        3  
ABC             240        3
ABC             240        3
DEF             37         1
GHI             90         2
GHI             90         2

我不想要数据库中的额外行,只需要在excel(或其他程序,如Toad)的输出中。

为了测试,我使用Toad for SQL,并通过PowerPivot将查询导入excel 2010.

1 个答案:

答案 0 :(得分:1)

您可以使用递归CTE来完成:

with    cte(customer,children,crates,i) as 
        (
        Select customer,children, children/80 + case when children%80 = 0 then 0 else 1 end crates, 0 from test
        union all
        select  customer,children,crates
        ,       i + 1
        from    cte
        where   cte.i < cte.crates -1
        )
select  customer,children,crates
from    cte
order by customer

使用测试数据的实例:SQLFiddle

来自SQLFiddle的结果:

enter image description here