[英]How to insert table filled with parentCode in SQL Server
我有很多代碼,這個代碼在另一個表中有很多孩子
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
感謝您閱讀有關我的問題的信息
您可以像這樣的代碼使用內部聯接
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
並獲取所有父級和最后一級
為此,您不需要臨時表:
select s.value as Parent, tb2.lastlevel
into ##tmp_getAllLastLevel
from [DWH-INF].[center].[dbo].[IFIRView_NeginTitleTotal] tb2 join
dbo.Split(',', @value) s
on s.value in (tb2.lastlevel, tb2.level1, tb2.level2, tb2.level3, tb2.level4, tb2.level5, tb2.level6, tb2.level7, tb2.level8);
還要注意,像這樣跨列存儲層次結構可能會使查詢變得不必要的復雜。 您試圖將值的“數組”存儲為單獨的列。 (在SQL中)通常最好將它們存儲在單獨的行中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.