Я написал следующий запрос, который производит ниже вывод:Использование SQL PIVOT с JOINS
SELECT
users.user_id AS 'User ID',
users.first_name AS 'First Name',
users.last_name AS 'Surname',
users.login AS 'Username',
CASE users.type WHEN 0 THEN 'Student' WHEN 1 THEN 'Staff Member' WHEN 2 THEN 'Guest/Other' END AS 'User Type',
CASE users.active WHEN 1 THEN 'Active' ELSE 'Inactive' END AS 'User Status', campuses.campus_name AS 'Campus', users.year_level AS 'Year Level',
users.class AS 'Class',
CASE users.eligible WHEN 1 THEN 'Yes' ELSE 'No' END AS 'Eligible',
forms.form_title AS 'Form Name',
users_forms_map.date AS 'Date Returned'
FROM users_forms_map
INNER JOIN users ON users_forms_map.user_fk = users.pk
INNER JOIN campuses ON users.campus_id=campuses.campus_id
INNER JOIN forms ON users_forms_map.form_id=forms.form_id
Я хотел бы PIVOT эту таблицу, чтобы создать столбец для каждого «Form Name» и одна строка для каждого пользователя. «Имя формы» должно быть динамическим, так как нет конечного набора имен форм.
Если то, что я надеюсь, что для достижения возможно, он будет производить следующий результат:
Я изо всех сил, чтобы получить это право! Заранее благодарим за любые рекомендации, которые вы можете предложить.
Это поможет вам увидеть, к чему вы дошли, с точки зрения попытки до сих пор. Пожалуйста, добавьте то, что вы пробовали, и как оно работает (сообщение об ошибке или неправильный вывод). Вы успешно использовали PIVOT раньше в простом случае, или это вы впервые используете его? – dsz
Лучше всего сделать в приложении, если это возможно. Любой заданный запрос всегда возвращает набор результатов с фиксированной формой - числом, именем и типами столбцов. Вы можете построить динамический запрос, но он будет уродлив, и большинство языков программирования приложений/сборщиков отчетов имеют лучшие возможности для выполнения этой задачи. –