powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSSQL
2 сообщений из 2, страница 1 из 1
MSSQL
    #39863126
user128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно из иерархии (снимок 1) сделать плоскую структуру, т.е. чтобы у каждого уровня иерархии был свой столбец (ID_Level1, Name_Level1, ID_Level2, Name_Level2, ID_Level3, Name_Level3). Последние задание в КР, не могу додуматься как сделать. Помогите пожалуйста(
...
Рейтинг: 0 / 0
MSSQL
    #39863128
3unknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSSQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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