powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Иерархическая структура и итоговая стоимость.
3 сообщений из 3, страница 1 из 1
Иерархическая структура и итоговая стоимость.
    #39611675
ChambaVamba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблица и данные:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create table #Test 
        (
            ID int not null,
            Parent_ID int not null,
            [Name] varchar(15) not null,
            Coast money null
        ); 
              
insert into #Test values(1, 0, 'Продукт', null);
insert into #Test values(2, 1, 'Молочный', null);
insert into #Test values(3, 1, 'Рыба', null);
insert into #Test values(4, 2, 'Молоко', 30.00);
insert into #Test values(5, 2, 'Кефир', 60.00);
insert into #Test values(6, 3, 'Треска', 400.00);
insert into #Test values(7, 3, 'Семга', 700.00);



Формирование иерархической структуры:
Код: 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.
with cteRN
     as (
         select *,
                row_number() over(partition by Parent_ID order by([Name])) as rn
         from   #Test
     ),
     ctePath
     as (
         select ID,
                Parent_ID,
                [Name],
                0 as lvl,
                convert(varchar(max), id) as sortpath
         from   #Test
         where  ID = 1
         
         union all
         
         select C.ID,
                C.Parent_ID,
                C.[NAME],
                P.lvl + 1,
                convert(
                    varchar(max),
                    P.sortpath + '.' + convert(varchar(max), c.rn)
                )           as sortpath           
         from   ctePath     as P
                join cteRN  as C on C.Parent_ID = P.ID
     )

select ID,
       Parent_ID,
       replicate(' | ', lvl) + [NAME] as ProductTree
from   ctePath
order by sortpath;

drop table #Test;



Помогите дополнить запрос, чтобы выводилась ещё и итоговая стоимость по группам/подгруппам/листьям. Примерно вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
ID	Parent_ID	ProductTree	Coast
1	0	        Продукт		1180,00
2	1	 	| Молочный	80,00
5	2	 	|  | Кефир	60,00
4	2	 	|  | Молоко	30,00
3	1	 	| Рыба		1100,00
7	3	 	|  | Семга	700,00
6	3	 	|  | Треска	400,00
...
Рейтинг: 0 / 0
Иерархическая структура и итоговая стоимость.
    #39611701
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChambaVamba,

Код: 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.
with cteRN
     as (
         select *,
                row_number() over(partition by Parent_ID order by([Name])) as rn
         from   #Test
     ),
     ctePath
     as (
         select ID,
                Parent_ID,
				--'/' as Path,
                [Name],
                0 as lvl,
                convert(varchar(max), id) as sortpath,
				Coast
         from   #Test
         where  ID = 1 
         
         union all
         
         select C.ID,
                C.Parent_ID,
				--p.path+cast(C.ID as varchar(5))+'/',
                C.[NAME],
                P.lvl + 1,
                convert(
                    varchar(max),
                    P.sortpath + '.' + convert(varchar(max), c.rn)
                )           as sortpath,
				C.Coast
         from   ctePath     as P
                join cteRN  as C on C.Parent_ID = P.ID
     )

select ID,
       Parent_ID,--path,
       replicate(' | ', lvl) + [NAME] as ProductTree,
	   (Select sum(b.Coast) From ctePath b Where b.sortpath+'.' like a.sortpath+'.%' )
from   ctePath a
order by sortpath;

drop table #Test;
...
Рейтинг: 0 / 0
Иерархическая структура и итоговая стоимость.
    #39611744
ChambaVamba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kopelly,

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


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