我正在忙着处理由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.
答案 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的结果: