表有聚合值,但如果值大于1,我需要返回多行。
以下是该表现在的样子:
date description amount
1/1/2015 alpha 3
1/1/2015 beta 1
以下是我需要它返回的方式:
date description amount
1/1/2015 alpha 1
1/1/2015 alpha 1
1/1/2015 alpha 1
1/1/2015 beta 1
非常感谢任何帮助。
答案 0 :(得分:1)
你需要一张数字表。这样的东西最多可以使用3个并且可以轻松扩展:
select t.date, t.description, 1 as amount
from table t join
(select 1 as n union all select 2 union all select 3) n
on n.n <= t.amount;
编辑:
如果表中有足够多的行用于较大的金额,您可以执行以下操作:
select t.date, t.description, 1 as amount
from table t join
(select @rn := @rn + 1 as n
from table cross join (select @rn := 0) vars
) n
on n.n <= t.amount;
答案 1 :(得分:0)
这很有效。
选择t.date,t.description,1作为金额 从表t加入 (选择@rn:= @rn + 1作为n 从表交叉连接(选择@rn:= 0)变量 )n 在n.n&lt; = t.amount;