尝试执行一个插入操作,从一个表中获取数据,并将其拆分为另一个表中的两行(或多行),同时保留父表中的外键。
对于这个例子,假设父表是Fruit
,并且有列:
fruit_id, num_fruit
字符串
我插入的表是Fruit_Sub
,列是:
Fruit_Sub_id, Fruit_id_FK, fruit_name, num_sub_fruit
型
每排水果都要插入Fruit_sub
,知道从Fruit.num_fruit
开始总是有3个苹果,其余的是香蕉。
如果Fruit
看起来像这样:
fruit_id num_fruit
----------------------
1 5
2 9
3 4
型
我想像这样将数据插入Fruit_sub
:
fruit_sub_id fruit_id_fk fruit_name num_sub_fruit
-----------------------------------------------------
1 1 apples 3
2 1 bananas 2
3 2 apples 3
4 2 bananas 6
5 3 apples 3
6 3 bananas 1
型
到目前为止,我对它的所有破解甚至都不能被识别为SQL。
2条答案
按热度按时间v2g6jxz61#
您可以联合两个查询,然后使用row_number窗口函数 Package 以生成sub_id。
字符串
| 水果_水果_ID|水果_ID|产品名称|水果数量|
| --|--|--|--|
| 1 | 1 |苹果| 3 |
| 2 | 1 |香蕉| 2 |
| 3 | 2 |苹果| 3 |
| 4 | 2 |香蕉| 6 |
| 5 | 3 |苹果| 3 |
| 6 | 3 |香蕉| 1 |
fiddle
fcy6dtqo2#
其中一个选项是将Case表达式与UNPIVOT一起使用
如果有可能存在NUM_FRUIT小于3的行-您也可以使用Case表达式处理它:
型