Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как изменить иерархию без потери данных  [new]
Romanov-krd
Member

Откуда:
Сообщений: 120
Всем привет. Кто может подсказать.
Нужно чтобы выводились данные не подразделения (напр воронежский филиал) а головного отдела (экономический департамент)
но при этом не урезались данные логин, группа,формат,очередь

сейчас
логин группа формат подразделение очередь
ivanov_ea Москва КК кк Москва(КО) 1
petrov_aa Брянск КГ кг Брянск(КО) 1

нужно
логин группа формат подразделение очередь
ivanov_ea Москва КК кк Экономический отдел 1
petrov_aa Брянск КГ кг Экономический отдел 1

т.е. чтобы по иерархии отображалось подразделение уровнем выше а остальные данные не урезались. вот код
with rec (block_name, parent_block_id, block_id,read_group_id, process_id)
as (select block_name, parent_block_id, block_id, READ_GROUP_ID, PROCESS_ID
from T_BLOCK
where PARENT_BLOCK_ID is null
union all
select t1.block_name, t1.parent_block_id, t1.block_id, t1.READ_GROUP_ID, t1.PROCESS_ID
from T_BLOCK t1 join rec on rec.block_id=t1.PARENT_BLOCK_ID)



select LOGIN_USERS.ACCEPTOR_LOGIN as 'Логин',
GRP.ACCEPTOR_NAME as 'Группа',
case when PATINDEX('%ММ_МК%',GRP.ACCEPTOR_NAME)>0 then 'ММ/МК'
else 'ГМ' end 'Формат',
rec.BLOCK_NAME as 'Подразделение',
ochered.ORDER_BY as 'Очередь'
from T_ACCEPTOR GRP
inner join T_USER_GROUP SOED on GRP.ACCEPTOR_ID=SOED.GROUP_ID
inner join T_ACCEPTOR LOGIN_USERS on LOGIN_USERS.ACCEPTOR_ID=SOED.USER_ID

inner join rec on rec.read_group_id=grp.ACCEPTOR_ID

inner join V_ROUTE_ORDER ochered on ochered.ACCEPTOR_ID=LOGIN_USERS.ACCEPTOR_ID
and ochered.BLOCK_ID=rec.BLOCK_ID
where GRP.ACCEPTOR_NAME like '%READ' and LOGIN_USERS.IS_ACTIVE=1
and GRP.IS_GROUP=1 and rec.PROCESS_ID=162
order by LOGIN_USERS.ACCEPTOR_LOGIN, rec.BLOCK_NAME
2 июн 17, 08:53    [20533566]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить иерархию без потери данных  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
1. Впредь потрудитесь обернуть код в тэги, чтобы наши глаза не истекали кровью. А также удалите весь код, не относящийся к решаемой задаче.
2. Потрудитесь выложить не только тестовые данные из таблицы пользователей, но и соответствующие тестовые данные из таблиц иерархии и подразделений.

3. Если вам нужно 1 уровень выше, то зачем городить CTE - просто LEFT JOIN иерархии.
2 июн 17, 09:08    [20533596]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить