我有桌子
+---------------------+
| ID | Code | Amount |
+---------------------+
| 1 | 101 | 1.2 |
| 2 | 101 | 1.3 |
| 3 | 101 | 1.3 |
| 4 | 101 | 1.4 |
| 5 | 101 | 1.2 |
| 6 | 101 | 1.5 |
| 7 | 101 | 1.4 |
| 8 | 101 | 1.3 |
| 9 | 101 | 1.1 |
| 10 | 101 | 1.0 |
+---------------------+
我正在尝试使用唯一ID复制每行约20次并更改
所以我的输出应该是这样的。
+---------------------+
| ID | Code | Amount -|
+---------------------+
| 1 | 101 | 1.2 |
| 1 | 102 | 1.2 |
| 1 | 103 | 1.2 |
| 1 | 104 | 1.2 |
| 1 | 105 | 1.2 |
| 1 | 106 | 1.2 |
| 1 | 107 | 1.2 |
| 1 | 108 | 1.2 |
| 1 | 109 | 1.2 |
| 1 | 110 | 1.2 |
| 1 | 115 | 1.2 |
| 1 | 118 | 1.2 |
| 1 | 121 | 1.2 |
| 1 | 119 | 1.2 |
| 2 | 101 | 1.3 |
| 2 | 102 | 1.3 |
| 2 | 103 | 1.3 |
| 2 | 104 | 1.3 |
+---------------------+
表等等。每个ID的代码都是相同的。它们不像我上面的示例表那样,所以我需要在某个地方对它们进行硬编码。我需要为每个ID添加20个代码。金额将是相同的。 ID将是相同的。但代码总是会有所不同。
我需要更新此表以反映这一点。
我无法做到这一点。我可以复制一次这一行。然后更改代码。但我只能为第一个ID做这个,我不能再做了。帮助是非常苛刻的。
谢谢,
答案 0 :(得分:1)
使用附加代码创建一个简单的1列表。
CREATE TABLE AdditionalCodes (Code int)
INSERT INTO AdditionalCodes VALUES (102), (103), (104), (105)
现在您要做的就是将此表与原始表连接,然后插入结果。
INSERT INTO MyTable (ID, Code, Amount)
SELECT t.ID, c.Code, t.Amount
FROM MyTable t, AdditionalCodes c
答案 1 :(得分:1)
您可以使用CTE或子查询来定义代码。以下是使用VALUES()
的方法:
select t.id, c.code, t.amount
from thetable t cross join
(values(101), (102), (103), . . . ) codes(code);