【发布时间】:2023-03-09 11:32:01
【问题描述】:
我有 2 张桌子,tr_testmodule 和 TR_Modulelocationdtl。
select * from tr_testmodule -output like below (nmoduleno is primary key, vlocationno is varchar)
nmoduleno vlocationnno
1 3,65,6,9,63
2 13,625,62,91,613
现在我想将数据从 tr_testmodule 插入到 TR_Modulelocationdtl 中,用于 tr_testmodule 的每一行,只需要一个查询。
例如我想为单个模块插入多行
select * from TR_Modulelocationdtl --(nid is pk,nlocationo-int)
nid nmoduleno nlocationno
1 1 3
2 1 65
3 1 6
4 1 9
5 1 63
6 2 13
7 2 625
我可以将这样的数据从临时表中拆分为临时表(但仅限单行)我可以将数据插入到我的“TR_Modulelocationdtl”中
SELECT * INTO #TR_Modulelocationdtl FROM (SELECT data AS nLocationno FROM dbo.SplitString('1,23,2,3,5',',') ) AS nLocationno
select * from #TR_Modulelocationdtl
nLocationno
1
23
2
3
5
【问题讨论】:
-
insert into t1 (col1, col2, ...) select cola, colb, ... from t2 where ...?
-
现在我明白了,unpivot。好主意,因为逗号分隔的项目很乱,只会导致很多问题——我猜你刚刚注意到了。
-
@jarlh 你能用 unpivot 为我写查询吗
-
您使用的是哪个 dbms? (您可能在这里需要特定于产品的功能。)
-
抱歉,我不太了解 SQL Server。
标签: sql sql-server database