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

ActivityFull Roles Resposibility
A4.1 Планирование проектов Заместитель директора по производству В
A4.1 Планирование проектов Руководитель проекта И
A4.1 Планирование проектов Руководитель проекта У
A4.2 Реализация проекта Заместитель директора по производству В
A4.2 Реализация проекта Команда проекта И
A4.3 Завершение проекта и анализ результатов проекта Заместитель директора по производству В
A4.3 Завершение проекта и анализ результатов проекта Команда проекта И

получить результат как в приложении
12 дек 12, 02:23    [13616429]     Ответить | Цитировать Сообщить модератору
 Re: как построить такую матрицу  [new]
Larchik
Guest
Larchik
Помогите пожалуйста из такой таблицы

ActivityFull Roles Resposibility
A4.1 Планирование проектов Заместитель директора по производству В
A4.1 Планирование проектов Руководитель проекта И
A4.1 Планирование проектов Руководитель проекта У
A4.2 Реализация проекта Заместитель директора по производству В
A4.2 Реализация проекта Команда проекта И
A4.3 Завершение проекта и анализ результатов проекта Заместитель директора по производству В
A4.3 Завершение проекта и анализ результатов проекта Команда проекта И

получить результат как в приложении


Activity Full Заместитель директора по производству Команда проекта Руководитель проекта
A4.1 Планирование проектов В И, У
A4.2 Реализация проекта В И
A4.3 Завершение проекта и анализ результатов проекта В И
12 дек 12, 02:28    [13616437]     Ответить | Цитировать Сообщить модератору
 Re: как построить такую матрицу  [new]
Добрый Э - Эх
Guest
Либо PIVOT, либо самодельная его имитация через case + group by
12 дек 12, 05:00    [13616496]     Ответить | Цитировать Сообщить модератору
 Re: как построить такую матрицу  [new]
Larchik
Guest
автор
Добрый Э - Эх,


можешь привести пример с case, плиз или ссылку скинь)
12 дек 12, 11:50    [13617822]     Ответить | Цитировать Сообщить модератору
 Re: как построить такую матрицу  [new]
Добрый Э - Эх
Guest
Одно из последних обсуждений данной темы на форуме
12 дек 12, 11:53    [13617857]     Ответить | Цитировать Сообщить модератору
 Re: как построить такую матрицу  [new]
qwerty112
Guest
Larchik
Помогите пожалуйста из такой таблицы

ActivityFullRolesResposibility
A4.1 Планирование проектовЗаместитель директора по производствуВ
A4.1 Планирование проектовРуководитель проектаИ
A4.1 Планирование проектовРуководитель проектаУ
A4.2 Реализация проектаЗаместитель директора по производствуВ
A4.2 Реализация проектаКоманда проектаИ
A4.3 Завершение проекта и анализ результатов проектаЗаместитель директора по производствуВ
A4.3 Завершение проекта и анализ результатов проектаКоманда проектаИ


получить результат как в приложении

Larchik

Activity FullЗаместитель директора по производствуКоманда проектаРуководитель проекта
A4.1 Планирование проектов В И, У
A4.2 Реализация проекта В И
A4.3 Завершение проекта и анализ результатов проектаВ И

тут, ещё, судя по И, У - контакенация строк нужна
https://www.sql.ru/faq/faq_topic.aspx?fid=731
12 дек 12, 11:59    [13617912]     Ответить | Цитировать Сообщить модератору
 Re: как построить такую матрицу  [new]
Larchik
Guest
qwerty112,

select  ActivityFull, Roles, 
		(select @s = @s + ',' +b.Resposibility from mtx b where (b.ActivityFull=a.ActivityFull) and (b.Roles = a.Roles) group by b.ActivityFull, b.Roles) Resposibility
from mtx a	
group by a.ActivityFull, a.Roles
order by ActivityFull, Roles


выдает ошибку "Неправильный синтаксис около конструкции "=" " HELP!!!!
12 дек 12, 12:18    [13618064]     Ответить | Цитировать Сообщить модератору
 Re: как построить такую матрицу  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Larchik
qwerty112,

select  ActivityFull, Roles, 
		(select @s = @s + ',' +b.Resposibility from mtx b where (b.ActivityFull=a.ActivityFull) and (b.Roles = a.Roles) group by b.ActivityFull, b.Roles) Resposibility
from mtx a	
group by a.ActivityFull, a.Roles
order by ActivityFull, Roles


выдает ошибку "Неправильный синтаксис около конструкции "=" " HELP!!!!

Воспользуйтесь другим способом конкатенации строк. Ссылку тут уже привели.
12 дек 12, 12:31    [13618176]     Ответить | Цитировать Сообщить модератору
 Re: как построить такую матрицу  [new]
Larchik
Guest
Гость333,

у меня подзапрос возвращает несколько значений их нужно склеить в одну строчку, без применения агрегатной функции...
12 дек 12, 12:35    [13618217]     Ответить | Цитировать Сообщить модератору
 Re: как построить такую матрицу  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Larchik
Гость333,

у меня подзапрос возвращает несколько значений их нужно склеить в одну строчку

Это мы поняли. Ссылку-то смотрели? Вот ещё одна: https://www.sql.ru/faq/faq_topic.aspx?fid=130
12 дек 12, 12:43    [13618303]     Ответить | Цитировать Сообщить модератору
 Re: как построить такую матрицу  [new]
Larchik
Guest
Гость333, Спасибо!

вот мой вариант, осталось только запятую в конце убрать
select  a.ActivityFull, a.Roles, 
		(select CAST(b.Resposibility as nvarchar)+',' from mtx b where (b.ActivityFull=a.ActivityFull) and (b.Roles = a.Roles) for xml path(''))  Resposibility
from mtx a	
group by a.ActivityFull, a.Roles
order by a.ActivityFull, a.Roles


извини, не знала что вся фишка в for xml path('') , это новый для меня оператор)
12 дек 12, 12:52    [13618373]     Ответить | Цитировать Сообщить модератору
 Re: как построить такую матрицу  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Larchik
вот мой вариант, осталось только запятую в конце убрать

Можно запятую убирать из начала:
(select CAST(b.Resposibility as nvarchar)+',' from mtx b where (b.ActivityFull=a.ActivityFull)

=>
stuff((select CAST(b.Resposibility as nvarchar)+',' from mtx b where (b.ActivityFull=a.ActivityFull) and (b.Roles = a.Roles) for xml path('')), 1, 1, '')
12 дек 12, 13:18    [13618643]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить