我目前有一张桌子,上面有数量。
ID Code Quantity
1 A 1
2 B 3
3 C 2
4 D 1
反正有写一个让我明白的sql语句
ID Code Quantity
1 A 1
2 B 1
2 B 1
2 B 1
3 C 1
3 C 1
4 D 1
我需要弄清楚数量并有很多行
谢谢
答案 0 :(得分:1)
以下是使用numbers
表到join
到以下位置的一种选择:
with numberstable as (
select 1 AS Number
union all
select Number + 1 from numberstable where Number<100
)
select t.id, t.code, 1
from yourtable t
join numberstable n on t.quantity >= n.number
order by t.id
请注意,根据您使用的数据库,这可能不是创建numbers
表的正确方法。这在支持common table expressions
的大多数数据库中都有效。但是答案的关键是join
和on
标准。
答案 1 :(得分:0)
一种方法是生成带有X个元素的数组(其中X是数量)。所以对于行
ID Code Quantity
1 A 1
2 B 3
3 C 2
你会得到
ID Code Quantity ArrayVar
1 A 1 [1]
2 B 3 [1,2,3]
3 C 2 [2]
使用序列函数(例如,在PrestoDB中,sequence(start,stop)-> array(bigint))
然后,取消嵌套该数组的位置,因此对于每个ID,您将获得X行,并将数量设置为1。不确定您使用的是哪种SQL分发,但这应该可以工作!
答案 2 :(得分:0)
您可以使用connect by语句交叉连接表以获得所需的输出。 检查我的解决方案,它的功能非常强大。
export class TestComponent implements OnInit {
constructor(){}
}