簡體   English   中英

如何在SQL Server中插入充滿ParentCode的表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM