Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Реально ли сделать такое в SQL?  [new]
rpe4a
Member

Откуда: Пермь
Сообщений: 110
Доброго всем вечера, перехожу сразу к сути, можно ли как-нибудь развернуть некоторые результаты выгрузки. У меня есть запрос:
SELECT 
          Directory_name as [Название теста]
	  ,Users.User_surname +' '+ users.User_name +' '+ Users.User_patronymic As [Испытуемый]
	  ,Org_name as [Организация]
	  --,UserQuestions.UserTest_id
	  ,REPLACE(UserQuestions.Question_content, char(10), '') as [Вопрос]
	  ,UserQuestions.Question_isTrue as [Результат]
  FROM [attestation].[dbo].[Directories]
  inner join Tests on Directories.Directory_id = Tests.Directory_id
  inner join UserTests on UserTests.Directory_Test_id = Tests.Directory_id
  inner join Users on Users.User_id = UserTests.User_id
  inner join Orgs on Orgs.Org_id = Users.Org_id
  inner join UserQuestions on UserQuestions.UserTest_id = UserTests.UserTest_id
  where Tests.Directory_id = 'BE4DB2CE-C95D-E411-9FEA-00215AA6C898'

Получаем что-то типо этого, если коротко, а так записей очень много:
Название теста Испытуемый Организация Вопрос Результат
Мониторинг 28.10.14 Иванов Иван Иваныч ИАЦ Вопрос 1 1
Мониторинг 28.10.14 Иванов Иван Иваныч ИАЦ Вопрос 2 0
Мониторинг 28.10.14 Иванов Иван Иваныч ИАЦ Вопрос 3 1
Мониторинг 28.10.14 Иванов Иван Иваныч ИАЦ Вопрос 4 0
Мониторинг 28.10.14 Иванов Иван Иваныч ИАЦ Вопрос 5 0
Мониторинг 28.10.14 Иванов Иван Иваныч ИАЦ Вопрос 6 0
Мониторинг 28.10.14 Иванов Иван Иваныч ИАЦ Вопрос 7 0
Мониторинг 28.10.14 Иванов Иван Иваныч ИАЦ Вопрос 8 1
Мониторинг 28.10.14 Иванов Иван Иваныч ИАЦ Вопрос 9 0
Мониторинг 28.10.14 Иванов Иван Иваныч ИАЦ Вопрос 10 1
Мониторинг 28.10.14 Еремина Клавдия Михаиловна Библиотека №25 Вопрос 1 1
Мониторинг 28.10.14 Еремина Клавдия Михаиловна Библиотека №25 Вопрос 2 0
Мониторинг 28.10.14 Еремина Клавдия Михаиловна Библиотека №25 Вопрос 3 1
Мониторинг 28.10.14 Еремина Клавдия Михаиловна Библиотека №25 Вопрос 4 1
Мониторинг 28.10.14 Еремина Клавдия Михаиловна Библиотека №25 Вопрос 5 1
Мониторинг 28.10.14 Еремина Клавдия Михаиловна Библиотека №25 Вопрос 6 1
Мониторинг 28.10.14 Еремина Клавдия Михаиловна Библиотека №25 Вопрос 7 1
Мониторинг 28.10.14 Еремина Клавдия Михаиловна Библиотека №25 Вопрос 8 0
Мониторинг 28.10.14 Еремина Клавдия Михаиловна Библиотека №25 Вопрос 9 1
Мониторинг 28.10.14 Еремина Клавдия Михаиловна Библиотека №25 Вопрос 10 1


А мне надо, чтобы у меня получилось что-то вроде этого:
Название теста Испытуемый Организация Вопрос 1 Вопрос 2 Вопрос 3 Вопрос 4 Вопрос 5 Вопрос 6 Вопрос 7 Вопрос 8 Вопрос 9 Вопрос 10
Мониторинг 28.10.14 Иванов Иван Иваныч ИАЦ 1 0 1 0 0 0 0 1 0 1
Мониторинг 28.10.14 Еремина Клавдия Михаиловна Библиотека №25 1 0 1 1 1 1 1 0 1 1

Есть у кого, какие-нибудь соображения? Пробовал Pivot не получилось (и вообще склоняюсь к мысле, что нельзя с помощью него, ибо количество столбцов для разворота в моем случае должно получаться динамически, потому что для этого теста 10 вопросов, а для другого будет 50 и что тогда, статика не годится, да и как я понимаю столбцы должны быть одинаковыми). Возможно ли это сделать курсором? Или может быть грузить этот запрос на сайт, и пытаться там уже средствами с# его раскромсать, как мне надо? Конечно самое простое, это когда пользователи качают и потом делают сводную таблицу по этой выгрузке в Excel (так руководству не нравится, мол что за дилетанство). Очень нужна помощь...

Кстати тут система такая, что вопрос 1 у одного юзера может не совпадать с вопросом 1 у второго юзера, т. е. айдишники у них разные(соответственно и контент вопроса и тип его) + общее количество вопросов на тест может быть 50, а пользователю произвольно выбирается 25. Вообще я тут пытаюсь выгрузить результаты юзеров пройденного теста. Далее этот запрос будет вертеться на сайте, чтобы пользователь мог щелкнуть по кнопке, и ему пришла отчетная инфа по данному тесту.
5 ноя 14, 16:59    [16801971]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
o-o
Guest
может, раз неизвестное число вопросов, не столбцами их выводить, а склеить результаты в одну строку?
т.е. колонка будет одна, а в ней то 10 результатов с выбранным разделителем, то 50.
вот в таком духе:
Сложение символьных полей в запросе
5 ноя 14, 17:11    [16802034]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
Wlr-l
Member

Откуда:
Сообщений: 638
rpe4a,

Руководство право - дилетантство.

Например,
Зачем Клавдии Михайловне знать результаты Ивана Ивановича?
Абсолютно не продумано представление данных пользователю.

Динамический pivot обсуждался уже не один раз. Но это вас не спасет.
5 ноя 14, 17:20    [16802075]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
iap
Member

Откуда: Москва
Сообщений: 47198
Wlr-l
Зачем Клавдии Михайловне знать результаты Ивана Ивановича?
Клавдия Михайловна - администратор!
5 ноя 14, 18:40    [16802505]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
rpe4a
Member

Откуда: Пермь
Сообщений: 110
Wlr-l
Руководство право - дилетантство.


Насчет руководства, может быть вы и правы. Но тут больше половины отчетов так работает и ничего, всех все устраивает, секретарша Зина даже обучена сводные таблицы делать. Но сейчас не об этом. =)

Wlr-l
Например,
Зачем Клавдии Михайловне знать результаты Ивана Ивановича?
Абсолютно не продумано представление данных пользователю.


Все правильно Клавдия Михайловна и не будет ничего знать об результатах Ивана Ивановича, да и не должна, эту выгрузку должен делать модератор сайта или человек который будет потом по ней делать аналитику. Клавдия Михайловна - испытуемый.

Wlr-l
Динамический pivot обсуждался уже не один раз. Но это вас не спасет.
Жаль, ну я долго пытался и у меня к сожалению тоже такая мысль возникла.
Извиняюсь, что поздно ответил, только на работу зашел.
6 ноя 14, 08:31    [16804229]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
rpe4a
Member

Откуда: Пермь
Сообщений: 110
o-o
может, раз неизвестное число вопросов, не столбцами их выводить, а склеить результаты в одну строку?
т.е. колонка будет одна, а в ней то 10 результатов с выбранным разделителем, то 50.
вот в таком духе:
Сложение символьных полей в запросе

Хмм очень интересно, сейчас гляну, спасибо. Как попробую отпишусь.
6 ноя 14, 08:38    [16804243]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
rpe4a
Member

Откуда: Пермь
Сообщений: 110
Пока я достиг только вот этого:
DirectoryName FIO Org Result
Мониторинг воспитателей от 28.10.2014 Балуев Андрей Михалович МАДОУ "Детский сад № 135" 1 0 1 0 0 0 0 1 0 1
Мониторинг воспитателей от 28.10.2014 Вахрина Лариса Александровна МАДОУ "Детский сад № 24" 1 1 1 0 1 1 1 1 0 1

и да вот запрос:
with helptable(DirectoryName, FIO, Org, UserTestId, Result)
as
(SELECT 
      [Directory_name] as [Название теста]
	  ,Users.User_surname +' '+ users.User_name +' '+ Users.User_patronymic As [Испытуемый]
	  ,Org_name as [Организация]
	  ,UserQuestions.UserTest_id
	  --,REPLACE(UserQuestions.Question_content, char(10), '') as [Вопрос]
	  ,UserQuestions.Question_isTrue as [Результат]
  FROM [attestation].[dbo].[Directories]
  inner join Tests on Directories.Directory_id = Tests.Directory_id
  inner join UserTests on UserTests.Directory_Test_id = Tests.Directory_id
  inner join Users on Users.User_id = UserTests.User_id
  inner join Orgs on Orgs.Org_id = Users.Org_id
  inner join UserQuestions on UserQuestions.UserTest_id = UserTests.UserTest_id
  where Tests.Directory_id = 'BE4DB2CE-C95D-E411-9FEA-00215AA6C898')

 select
 DirectoryName,
 FIO,
 Org,
 substring((select ' ,'+cast(Result as nvarchar(max)) from helptable t2
                          where t2.UserTestId=t1.UserTestId for xml path(''))
                          , 3, LEN((select ' ,'+cast(Result as nvarchar(max)) from helptable t2 where t2.UserTestId=t1.UserTestId for xml path('')))) Result
  from helptable t1 group by DirectoryName, FIO, Org, t1.UserTestId


теперь, то я думаю можно курсором пройтись? И распарсить строку?
6 ноя 14, 09:25    [16804400]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
vova ivanov
Member [заблокирован]

Откуда:
Сообщений: 1090
rpe4a
Есть у кого, какие-нибудь соображения? Пробовал Pivot не получилось (и вообще склоняюсь к мысле, что нельзя с помощью него, ибо количество столбцов для разворота в моем случае должно получаться динамически

раз уж, это нужно для сайта - отчет в Reporting-е не устроит ?
там есть возможность формировать pivot-отчет с произвольным к-во полей
6 ноя 14, 09:54    [16804531]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
rpe4a
Member

Откуда: Пермь
Сообщений: 110
vova ivanov
там есть возможность формировать pivot-отчет с произвольным к-во полей
а по подробнее можно? Это как я понимаю, как то на сайт внедрить придется?
6 ноя 14, 10:15    [16804640]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
vova ivanov
Member [заблокирован]

Откуда:
Сообщений: 1090
rpe4a
vova ivanov
там есть возможность формировать pivot-отчет с произвольным к-во полей
а по подробнее можно? Это как я понимаю, как то на сайт внедрить придется?
а что за сайт ? не на Шарепоинте ? - для него репортинг - вообще "родное" :)
Create Matrix Report in SSRS
6 ноя 14, 10:22    [16804672]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
rpe4a
Member

Откуда: Пермь
Сообщений: 110
vova ivanov, к сожалению нет :( на asp Web Api...
6 ноя 14, 10:48    [16804832]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
Wlr-l
Member

Откуда:
Сообщений: 638
rpe4a,

"Насчет руководства, может быть вы и правы."
Наверно, вы не поняли. Я сказал: ваше руководство право в том, что считает вашу затею с выводом результатов тестирования дилетантством, независимо от вывода в сводные таблицы Excel или на WEB-страницу.

"Но тут больше половины отчетов так работает и ничего, всех все устраивает"
А кто эти отчеты проектировал? Конечно, предшественники!

Еще раз: "Абсолютно не продумано представление данных пользователю". Отсюда и задача получения строк вида "Мониторинг 28.10.14 Иванов Иван Иваныч ИАЦ 1 0 1 0 0 0 0 1 0 1", для обработки которых будут нужны парсеры, курсоры, ... ("теперь, то я думаю можно курсором пройтись? И распарсить строку?"), несмотря на то, что "секретарша Зина даже обучена сводные таблицы делать". Радует, что есть в наших селеньях секретарши Зины, которые умеют делать не только зеленый чай!

"Динамический pivot ... вас не спасет." "Жаль, ну я долго пытался и у меня к сожалению тоже такая мысль возникла." И здесь вы не поняли. Технически реализуемо. Подумайте о "человеке, который будет потом по ней делать аналитику".

Прислушайтесь к словам вашего руководства.
6 ноя 14, 10:59    [16804906]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
Wlr-l
Member

Откуда:
Сообщений: 638
iap,

Представьте, что будет в курилке после тестирования сотрудников!
6 ноя 14, 11:04    [16804938]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
rpe4a
Member

Откуда: Пермь
Сообщений: 110
Wlr-l, я вас к сожалению не совсем понимаю,
Wlr-l
Наверно, вы не поняли. Я сказал: ваше руководство право в том, что считает вашу затею с выводом результатов тестирования дилетантством, независимо от вывода в сводные таблицы Excel или на WEB-страницу.

Затея как раз наоборот моего руководства... да и причем тут это, мне сказали, как надо, и я должен это сделать, вот и вся загадка. Меня интересует лишь можно ли это сделать, как я хочу желательно средствами SQL?
Wlr-l
"Динамический pivot ... вас не спасет." "Жаль, ну я долго пытался и у меня к сожалению тоже такая мысль возникла." И здесь вы не поняли. Технически реализуемо.

Хотелось бы развидеть, как это реализовать, пока вы только петингом занимаетесь и ваши комментарии никак не поспособствовали решению моей проблемы.
Wlr-l
Подумайте о "человеке, который будет потом по ней делать аналитику".

Как раз поэтому мне и надо сделать отчет в том виде в котором я хочу, чтобы ему(человеку) было удобно.
Wlr-l
А кто эти отчеты проектировал? Конечно, предшественники!

Как четко подмечено :) Вангуете?
Тогда подскажи, как же эти отчеты так спроектировать, чтобы у всех было счастье? И у меня как разработчика и у начальства и у пользователя?
6 ноя 14, 11:45    [16805149]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
rpe4a
Member

Откуда: Пермь
Сообщений: 110
Wlr-l
iap,

Представьте, что будет в курилке после тестирования сотрудников!

И о5 же какая разница, что там будет. Пусть хоть они там убивать друг друга начнут.
6 ноя 14, 11:48    [16805159]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
vova ivanov
Member [заблокирован]

Откуда:
Сообщений: 1090
rpe4a,

давайте "заново" :)

1. Чем не устраивает динамик.скл ? сделайте хранимку, в которой и будет вся эта "динамика", и вызывайте её из клиента. Клиентская программа и знать ничего не будет, про то, как там этот PIVOT получен ...
2. А что вы, в клиентской части (т.е. в скриптах сайта) собираетесь делать с рекордсетом с неизвестным кол-вом полей ? Как его выводить будете ? динамически "рисовать" нужное к-во "ячеек", в зависимости от результата ?
6 ноя 14, 11:56    [16805212]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
gang
Member

Откуда:
Сообщений: 1394
rpe4a,
Это, конечно, только мое личное мнение. Но имея некоторый опыт в "отчетостроении" позволю себе поделиться.
Вы, похоже, пытаетесь на 1 листе реализовать стразу 2 задачи: отобразить и сводные результаты по всем пытуемым и детализацию по каждому из них. На первый взгляд все клево, все сразу под рукой (при условии что реализуете, SSRS, кстати, такое вполне позволяет). Но на практике данных в отчете должно быть "мало". В крайнем случае допустимо либо "много" строк либо "много" столбцов. Это конечно субъективно, но в среднем 7-8 колонок это уже максимум после которого восприятие информации резко снижается. А отчет с количеством столбцов по 15-20 шт. уже просто не читаем. Так, что лучше поделить Вашу выборку на 2.
1я - Сводные данные по списку, типа Тест, Дата, ФИО, Организация, Итоговый результат (например 5 из 8). Итоговый результат, можно также например сделать более "реляционным" разбив на колонки Всего вопросов, Сума правильных (не правильных).
2я - Детализация по каждому пытуемому. Там уже первые поля из сводной выборки это фильтры (и шапка при реализации полноценного отчета). А в строках конкретные вопросы и результаты по каждому.
При таком подходе, кстати допустимо будет иметь не только разное кол-во вопросов для каждого, но и сами вопросы могут быть абсолютно разными. Т.к. все они будут отображаться только во 2й выборке, которая будет для каждого опрашиваемого индивидуальной.
По поводу реализации, например в SSRS или даже в XL (например, при подключении источника данных). В принципе можно. Приложил пример с разворачиваемой группой столбцов, но нужны универсальные идентификаторы столбцов, т.е. в вашем случае номера вопросов, а не их описание. Кстати, какую Вы предполагаете реализацию в плане интерфейса?

К сообщению приложен файл. Размер - 97Kb
6 ноя 14, 12:45    [16805493]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
Wlr-l
Member

Откуда:
Сообщений: 638
rpe4a, "Wlr-l, я вас к сожалению не совсем понимаю". Что здесь не понятного?

Из таблиц Directories, Tests, UserTests, ... ты формируешь (вернее, сам не можешь этого сделать) строку вида (не важно это одна строка или строка, разбитая на столбики):

"Мониторинг воспитателей от 28.10.2014 Балуев Андрей Михалович МАДОУ "Детский сад № 135" 1 0 1 0 0 0 0 1 0 1"

После этого ты спрашиваешь "теперь, то я думаю можно курсором пройтись? И распарсить строку?". Т.е. после формирования этой глупой строки ты не представляешь, что делать дальше.

Третий раз говорю: "Абсолютно не продумано представление данных пользователю". Опять не понятно? Если это психологическое тестирование, то психолог, проводящий тестирование, тебе объяснит.

"И у меня как разработчика". Разработчика-то нет!

У меня сложилось впечатление, что и значение слова "петтинг" ты не понимаешь! Совсем не понимаешь!
6 ноя 14, 13:10    [16805692]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
rpe4a
Member

Откуда: Пермь
Сообщений: 110
vova ivanov,
vova ivanov
1. Чем не устраивает динамик.скл ? сделайте хранимку, в которой и будет вся эта "динамика", и вызывайте её из клиента. Клиентская программа и знать ничего не будет, про то, как там этот PIVOT получен ...

Так и хочу сделать... вот сижу и пробую, взялся снова за Pivot пока результатов 0. Главное запрос написать.
vova ivanov
2. А что вы, в клиентской части (т.е. в скриптах сайта) собираетесь делать с рекордсетом с неизвестным кол-вом полей ? Как его выводить будете ? динамически "рисовать" нужное к-во "ячеек", в зависимости от результата ?

Планируется, что пользователь будет жать по кнопке и ему будет сохраняться этот отчет, визуального представления пока не требуется.
6 ноя 14, 13:21    [16805764]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
Glory
Member

Откуда:
Сообщений: 104751
rpe4a
Так и хочу сделать... вот сижу и пробую, взялся снова за Pivot пока результатов 0.

https://www.sql.ru/faq/faq_topic.aspx?fid=358
6 ноя 14, 13:23    [16805778]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
rpe4a
Member

Откуда: Пермь
Сообщений: 110
gang
Вы, похоже, пытаетесь на 1 листе реализовать стразу 2 задачи: отобразить и сводные результаты по всем пытуемым и детализацию по каждому из них. На первый взгляд все клево, все сразу под рукой (при условии что реализуете, SSRS, кстати, такое вполне позволяет). Но на практике данных в отчете должно быть "мало". В крайнем случае допустимо либо "много" строк либо "много" столбцов. Это конечно субъективно, но в среднем 7-8 колонок это уже максимум после которого восприятие информации резко снижается. А отчет с количеством столбцов по 15-20 шт. уже просто не читаем. Так, что лучше поделить Вашу выборку на 2.

Ну да имеено это и охото сделать. Кстати да, читал в книге, что человеку сложно держать больше 5-7 оъектов в памяти :)

gang
1я - Сводные данные по списку, типа Тест, Дата, ФИО, Организация, Итоговый результат (например 5 из 8). Итоговый результат, можно также например сделать более "реляционным" разбив на колонки Всего вопросов, Сума правильных (не правильных).
2я - Детализация по каждому пытуемому. Там уже первые поля из сводной выборки это фильтры (и шапка при реализации полноценного отчета). А в строках конкретные вопросы и результаты по каждому.

Спасибо, довольно внятно, надо будет это как то подсунуть руководителю. Хз, что он там скажет, может ему понравиться такой вид, но это хорошо ложится, если эти данные выводить наглядно, мы пока хотели кнопкой просто, чтобы выгружался отчет.
gang
Кстати, какую Вы предполагаете реализацию в плане интерфейса?

Пока бонально кнопка, но если они захотят это все еще размазать по ХТМЛ, то ваш вариант, прекрасно вписывается.
6 ноя 14, 13:31    [16805837]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
rpe4a
Member

Откуда: Пермь
Сообщений: 110
Wlr-l,
Wlr-l
вернее, сам не можешь этого сделать

как раз сам я это и сделал, благодаря человеку который дал ссылочку, вначале, на тему FAQ.
Wlr-l
Т.е. после формирования этой глупой строки ты не представляешь, что делать дальше.

Истина, ведь если бы я знал, я бы не писал на форум, о5 вы вангуете :)
Wlr-l
Третий раз говорю: "Абсолютно не продумано представление данных пользователю". Опять не понятно? Если это психологическое тестирование, то психолог, проводящий тестирование, тебе объяснит.

Мил человек, причем тут психолог, у тебя одни оффтоппы, ты тему видел? Спешу заметить, она называется "реально ли такое сделать", но ты никак не уймешься и 3 своим комментарием ничего не привносишь сюда, можешь ли ты любезный просто слиться?
Wlr-l
И у меня как разработчика". Разработчика-то нет!

Возможно доля правды в этом есть, как бы это было не обидно, но я стараюсь решить проблему и думаю все получится, не все стали такими крутыми, как ты сразу. Все приходит с практикой.

Модератор: Без обсуждения личных качеств участников


Сообщение было отредактировано: 6 ноя 14, 13:53
6 ноя 14, 13:49    [16805969]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
rpe4a
Member

Откуда: Пермь
Сообщений: 110
DECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
DECLARE @ColumnName AS NVARCHAR(MAX)
declare @id nvarchar(max) = 'BE4DB2CE-C95D-E411-9FEA-00215AA6C898'

SELECT @ColumnName= ISNULL(@ColumnName + ',','') 
       + QUOTENAME(Question_id)
FROM (SELECT DISTINCT UserQuestions.Question_id FROM UserQuestions where UserQuestions.UserTest_id
			 in (select UserTest_id from UserTests where UserTests.Directory_Test_id = @id)) AS Courses;

set @DynamicPivotQuery = 'select  Directory_name  , Users.User_surname + users.User_name + Users.User_patronymic  ,Org_name, '+@ColumnName+', TotalResult from 
(
select
      Directory_name as DirectoryName
	  ,Users.User_surname + users.User_name + Users.User_patronymic as FIO
	  ,Org_name as ORG
	  ,UserTests.UserTest_id as UserTestID
	  --,UserQuestions.Question_id as QuestionId
	  --,REPLACE(UserQuestions.Question_content, char(10), '') as [Вопрос]
	  ,cast(UserQuestions.Question_isTrue as decimal (5,2)) as result
	  ,cast(sum(UserQuestions.Question_isTrue) over (partition by UserTests.UserTest_id) as decimal (5,2)) as TotalResult
  FROM [attestation].[dbo].[Directories]
  inner join Tests on Directories.Directory_id = Tests.Directory_id
  inner join UserTests on UserTests.Directory_Test_id = Tests.Directory_id
  inner join Users on Users.User_id = UserTests.User_id
  inner join Orgs on Orgs.Org_id = Users.Org_id
  inner join UserQuestions on UserQuestions.UserTest_id = UserTests.UserTest_id
  where Tests.Directory_id = '+@id+') as x
  pivot (
  max(result) for UserTestID in ('+@ColumnName+')
  )'

  execute @DynamicPivotQuery


пока только это сделал и то выдает ошибку :
Ошибка
Сообщение 203, уровень 16, состояние 2, строка 32
Имя "select Directory_name, Org_name, [F3BE7008-CC5D-E411-9FEA-00215AA6C898],[F9BE7008-CC5D-E411-9FEA-00215AA6C898],[FDBE7008-CC5D-E411-9FEA-00215AA6C898],[02BF7008-CC5D-E411-9FEA-00215AA6C898],[07BF7008-CC5D-E411-9FEA-00215AA6C898],[09A0F11A-CD5D-E411-9FEA-00215AA6C898],[0EA0F11A-CD5D-E411-9FEA-00215AA6C898],[13A0F11A-CD5D-E411-9FEA-00215AA6C898],[18A0F11A-CD5D-E411-9FEA-00215AA6C898],[1DA0F11A-CD5D-E411-9FEA-00215AA6C898], TotalResult from
(
select
Directory_name as DirectoryName
,Users.User_surname + users.User_name + Users.User_patronymic as FIO
,Org_name as ORG
,UserTests.UserTest_id as UserTestID
--,UserQuest" не является допустимым идентификатором.
6 ноя 14, 14:15    [16806140]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
Glory
Member

Откуда:
Сообщений: 104751
rpe4a
пока только это сделал и то выдает ошибку :

А вы интересовались в хелпе насчет синтаксиса execute ? Ии предпочитавете осваивать синтаксис методом тыка ?
6 ноя 14, 14:21    [16806179]     Ответить | Цитировать Сообщить модератору
 Re: Реально ли сделать такое в SQL?  [new]
o-o
Guest
execute (@DynamicPivotQuery)
6 ноя 14, 14:21    [16806181]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить