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

SQL Query output: Insert a row, based on a fields value

我正忙着处理一些 SQl 查询,这些查询由 excel 处理并使用单词序列号打印。这是为了给学校的水果做送货单。 80 Children 表示 80 份水果,这可以装进一个板条箱。所以对于超过 80 children 我们需要 2 个板条箱等等。此时的最大值为 240 children,即 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 用于 SQL,并且我通过 PowerPivot 将查询导入 excel 2010。

您可以使用递归 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 的结果: