Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Иерархическая структура и итоговая стоимость. / 3 сообщений из 3, страница 1 из 1
07.03.2018, 10:43
    #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
07.03.2018, 11:10
    #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
07.03.2018, 12:10
    #39611744
ChambaVamba
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархическая структура и итоговая стоимость.
Kopelly,

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


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