Как вставить таблицу, заполненную parentCode, в SQL Server - PullRequest
0 голосов
/ 05 мая 2019

У меня много кодов, и у этого кода много детей в другой таблице

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) 

Этот код в порядке и получить всех детей для родительского идентификатора = 4105.

Но у меня много родителей, таких как

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

Как я могу вставить весь последний уровень и родительский элемент в одну таблицу, как эта таблица

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

Спасибо, что прочитали о моей проблеме

Ответы [ 2 ]

1 голос
/ 05 мая 2019

вы можете использовать внутреннее соединение, как этот код

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

и получите всех родителей и последнего уровня

0 голосов
/ 05 мая 2019

Для этого вам не нужна временная таблица:

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) хранить их в отдельных строках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...