Sql 多次插入行的副本,但更改了1列
我有桌子Sql 多次插入行的副本,但更改了1列,sql,sql-server,Sql,Sql Server,我有桌子 +---------------------+ | 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
+---------------------+
| 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的代码都是相同的。它们的顺序与上面的示例表不同,因此我需要在某个地方对它们进行硬编码。有20多个代码,我需要为每个ID添加。金额将是相同的。ID将是相同的。但是代码总是不同的
我需要更新此表以反映这一点
我做这件事有困难。我可以复制一次行。然后更改代码。但是我只能为第一个ID做这些,我不能再做了。非常感谢你的帮助
谢谢,用附加代码创建一个简单的单列表
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
您可以使用CTE或子查询来定义代码。下面是一个使用
VALUES()
的方法:
“我做这件事有困难。”-有错误吗?谢谢,这件事做得很好。我已经在一张表格中找到了我需要的代码。只是我今天没能正确地理解这部分。
select t.id, c.code, t.amount
from thetable t cross join
(values(101), (102), (103), . . . ) codes(code);