Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSSQL / 2 сообщений из 2, страница 1 из 1
18.09.2019, 03:53
    #39863126
user128
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL
Нужно из иерархии (снимок 1) сделать плоскую структуру, т.е. чтобы у каждого уровня иерархии был свой столбец (ID_Level1, Name_Level1, ID_Level2, Name_Level2, ID_Level3, Name_Level3). Последние задание в КР, не могу додуматься как сделать. Помогите пожалуйста(
...
Рейтинг: 0 / 0
18.09.2019, 05:40
    #39863128
3unknown
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
declare @t table (id int, name varchar(30), ID_Parent int, Level int);

insert into @t
values
 (1, 'Food', NULL,1),
 (2, 'Non Food', Null, 1),
 (3, 'Chocolates', 1, 2),
 (4, 'Beverage', 1, 2),
 (5, 'Sweets', 1,2),
 (6,'Wet Wipes', 2,2),
 (7, 'Shampoo', 2,2),
 (8, 'Dark chocolate',3,3)

 ;WITH tree AS
(
    SELECT 
        id as ID_CURR,
        ID,
        ID as ID_1,
        Name as Name_1,
        cast(0 as int) as ID_2,
        cast('na' as varchar(30)) as Name_2,
        cast(0 as int) as ID_3,
        cast('na' as varchar(30)) as Name_3,
        ID_Parent,
        Level
    FROM 
        @t
    WHERE
        Level = 1
    UNION ALL
    SELECT
        tree.ID_CURR,
        tbl.ID,
        tree.ID_1,
        tree.Name_1,
        case when tbl.Level = 2 then tbl.ID else tree.ID_2 end as ID_2,
        case when tbl.Level = 2 then tbl.Name else tree.Name_2 end as Name_2,
        case when tbl.Level = 3 then tbl.id else tree.ID_3 end as ID_3,
        case when tbl.Level = 3 then tbl.Name else tree.Name_3 end as Name_3,
        tbl.ID_Parent,
        tbl.Level
    FROM 
        @t tbl
    JOIN
        tree
        ON tree.ID = tbl.ID_Parent
		)
		SELECT
   ID_1,
   Name_1,
   ID_2,
   Name_2,
   ID_3,
   Name_3

FROM 
       tree
OPTION (MAXRECURSION 0)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSSQL / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]