基于另一行将多行插入表中

时间:2016-03-10 14:52:59

标签: sql tsql

我正在寻找创建一个查找表来加入我们现有的一个表。现有表格的结构如下:

Version| CompanyNumber|EffDate   |ExpDate   |Indicator
------------------------------------------------------
 1     |     2        |xx/xx/xxxx|xx/xx/xxxx| 0
 2     |     2        |xx/xx/xxxx|xx/xx/xxxx| 1

新表具有此结构,应该如下填充:

ID | Version | Form
---------------------
1  |   1     |  1
2  |   1     |  2
3  |   1     |  3
4  |   2     |  3

我正在努力解决的问题是使用上面示例中的数据填充新表。如果指标为0,我将始终使用1,2和3填充表单。

因此,如果指标为0,我想为每个版本添加表格1,2和3,如果指标为1,我只想添加表格3。

先谢谢

1 个答案:

答案 0 :(得分:2)

您可以使用此类查询来执行INSERT

INSERT INTO Table2(Version, Form)
SELECT Version, x.v
FROM Table1
INNER JOIN (VALUES (1, 3), (2, 2), (3, 1)) AS x(i, v)
ON IIF(Table1.Indicator = 0, 3, Table1.Indicator) >= x.i

如果Indicator等于0,则插入3行,否则只插入1行。

注意:我认为ID的字段Table2IDENTITY字段。