Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
помогите написать запрос
|
|||
|---|---|---|---|
|
#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, 07:55 |
|
||
|
помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
Я так понимаю, тут нужен PIVOT. Вот что у меня пока получилось (выдает синтаксическую ошибку): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2019, 09:10 |
|
||
|
помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
PIVOT не нужен. Для конкатенации в группе используют STRING_AGG(), если версия сервера позволяет, либо трик через FOR XML. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2019, 09:17 |
|
||
|
помогите написать запрос
|
|||
|---|---|---|---|
|
#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:26 |
|
||
|
помогите написать запрос
|
|||
|---|---|---|---|
|
#18+
AkinaPIVOT не нужен. Для конкатенации в группе используют STRING_AGG(), если версия сервера позволяет, либо трик через FOR XML. Спасибо большое, STRING_AGG() просто волшебно работает и не зависит от числа ошибок: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2019, 09:33 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39876877&tid=1687120]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
91ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 256ms |
| total: | 466ms |

| 0 / 0 |
