首页 > 解决方案 > 如何在 SQL Server 中插入用 parentCode 填充的表

问题描述

我有很多代码,这个代码在另一个表中有很多孩子

DECLARE @value VARCHAR(150);

SET @value = '4105';

SELECT VALUE Parent 
INTO ##k 
FROM dbo.Split  (',',@value)

SELECT DISTINCT lastlevel 
INTO ##tmp_getAllLastLevel  
FROM [DWH-INF].[center].[dbo].[IFIRView_NeginTitleTotal] 
WHERE lastlevel IN (SELECT parent FROM ##k) 
   OR level1 IN (SELECT parent FROM ##k) 
   OR level2 IN (SELECT parent FROM ##k) 
   OR level3 IN (SELECT parent FROM ##k) 
   OR level4 IN (SELECT parent FROM ##k) 
   OR level5 IN (SELECT parent FROM ##k) 
   OR level6 IN (SELECT parent FROM ##k) 
   OR level7 IN (SELECT parent FROM ##k) 
   OR level8 IN (SELECT parent FROM ##k) 

此代码可以,并获取父 id = 4105 的所有子代。

但我有很多父母喜欢

SET @value = '4105,4106,2034,2055';

如何将所有 lastlevel 和 parent 插入到一个表中,比如这个表

    parent      lastlevel
------------------------------
    4105          1273
    4105          1275
    4105          1279
    4106          1288
    4106          1292
    2055          1073

感谢您阅读我的问题

标签: sqlsql-server

解决方案


你可以像这段代码一样使用内部连接

select tb1.Parent,tb2.lastlevel into ##tmp_getAllLastLevel  from ##k 
tb1 inner join  [DWH-INF].[center].[dbo].[IFIRView_NeginTitleTotal]  tb2 on 
tb1.Parent=tb2.lastlevel or tb1.Parent=tb2.level1 or
tb1.Parent=tb2.level2 or tb1.Parent=tb2.level3 or tb1.Parent=tb2.level4 or 
tb1.Parent=tb2.level5 or tb1.Parent=tb2.level6 or tb1.Parent=tb2.level7
or tb1.Parent=tb2.level8

并获取所有父级和最后一级


推荐阅读