Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
16.10.2019, 07:55
|
|||
|---|---|---|---|
помогите написать запрос |
|||
|
#18+
Добрый день, Есть две таблицы: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. В первой таблице список новых студентов. Во второй записи ошибок найденных специальным процессом в их данных, например дата рождения за рамками допустимого, id уже существует и т.д. Каждый студент может иметь ноль, одну или более одной ошибок. Мне нужно написать запрос (желательно не прибегая к циклам), который запишет в таблицу temp_student в поле validation_messages все ошибки из таблицы validation_results (если они есть) или "ОК" если их нет. То есть если у студента в данных две ошибки, то эти строки нужно слепить вместе и засунуть в поле validation_messages. Две таблицы связаны по полю id. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.10.2019, 09:10
|
|||
|---|---|---|---|
помогите написать запрос |
|||
|
#18+
Я так понимаю, тут нужен PIVOT. Вот что у меня пока получилось (выдает синтаксическую ошибку): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.10.2019, 09:17
|
|||
|---|---|---|---|
помогите написать запрос |
|||
|
#18+
PIVOT не нужен. Для конкатенации в группе используют STRING_AGG(), если версия сервера позволяет, либо трик через FOR XML. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.10.2019, 09:26
|
|||
|---|---|---|---|
помогите написать запрос |
|||
|
#18+
AkinaPIVOT не нужен. Для конкатенации в группе используют STRING_AGG(), если версия сервера позволяет, либо трик через FOR XML. У меня все-таки получилось с PIVOT, но только для заранее известных значений кодов ошибок: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Вот результат на тестовых данных: id dob first_name last_name gender class status validation_messages 1 01.01.2010 A W 2 2 enrolled duplicate student/age out of boundaries/wrong class/ 2 01.01.2011 B X 2 2 enrolled duplicate student/age out of boundaries/wrong class/ 3 01.01.2012 C Y 2 2 enrolled duplicate student/age out of boundaries// 4 01.01.2013 A Z 1 1 enrolled duplicate student/// 5 01.01.2014 B W 2 1 enrolled duplicate student/// 6 01.01.2015 C X 1 1 enrolled OK 7 01.01.2016 A Y 2 1 enrolled OK 8 01.01.2017 B Z 2 1 enrolled OK 9 01.01.2018 C W 1 1 enrolled OK 10 01.01.2019 A X 2 2 enrolled OK Было бы неплохо сделать этот запрос более динамическим для любых наборов кодов ошибок включая которые появятся в будущем. Пошел читать про STRING_AGG() А как это можно реализовать через FOR XML? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.10.2019, 09:33
|
|||
|---|---|---|---|
помогите написать запрос |
|||
|
#18+
AkinaPIVOT не нужен. Для конкатенации в группе используют STRING_AGG(), если версия сервера позволяет, либо трик через FOR XML. Спасибо большое, STRING_AGG() просто волшебно работает и не зависит от числа ошибок: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1687120]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
132ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 441ms |

| 0 / 0 |
