Понадобилось в отчетах выводить
группировка (уровень №1) "ПолноеНаименованиеРодителя" = итог,итог,итог,....
группировка (уровень №2) "ПодчиненныйЭлементВГруппе" = итог,итог,итог,....На форуме нашел готовые рабочие решения для "поэлементного" ПолноеНаименование()
а не так чтоб в SELECT-е использовать.....
Например темы:
http://www.1cpp.ru/forum/YaBB.pl?num=1294933213http://www.1cpp.ru/forum/YaBB.pl?num=1249210135http://www.1cpp.ru/forum/YaBB.pl?num=1175593013В общем - мне не подходит.
Нашел решение (сильно не бейте).
Оставляю код "без наворотов", как говорится "голая идея".
Кому интересно - пользуйтесь на здоровье. Критика приветствуется.
--очень грубо, нужно поработать над if exists....
drop table #TTT
create table #TTT
(id char(9) primary key clustered
,parentid char(9)
,code char(8)
,descr char(100)
,isfolder tinyint
,ismark bit
,level int
,fullcode varchar(2400) --- вряд ли кол-во уровней
,fulldescr varchar(2400) --- в справочнике будет больше 24....
)
declare @lvl int
SELECT @lvl = 1
-- загружаем корневые (группы+элементы):
insert into #TTT
select
SC92.id as id
,SC92.parentid as parentid
,SC92.code as code
,SC92.descr as descr
,SC92.isfolder as isfolder
,SC92.ismark as ismark
,@lvl as level
,ltrim(rtrim(SC92.code)) as fullcode
,ltrim(rtrim(SC92.descr)) as fulldescr
from SC92
where SC92.parentid=' 0 '
-- грузим всё что осталось пока количество строк в таблице не выровняется
-- (группы+элементы):
declare @i int
SELECT @i = count(*) FROM SC92
WHILE (SELECT count(*) FROM #TTT) < (@i)
BEGIN
SELECT @lvl = @lvl+1
insert into #TTT
select
SC92.id as id
,SC92.parentid as parentid
,SC92.code as code
,SC92.descr as descr
,SC92.isfolder as isfolder
,SC92.ismark as ismark
,@lvl as level
,ltrim(rtrim(#TTT.fullcode))+'/'+ltrim(rtrim(SC92.code)) as fullcode
,ltrim(rtrim(#TTT.fulldescr))+'/'+ltrim(rtrim(SC92.descr)) as fulldescr
from SC92
inner join #TTT on SC92.parentid=#TTT.id
where SC92.id not in (select #TTT.id from #TTT)
END
-- посмотрим что загрузилось:
select * from #TTT order by #TTT.fulldescr
Что дальше?А дальше: можно
JOIN-ться к таблице
#TTT в своих запросах.....
В общем, как-то так....