У меня под рукой очень специфическая проблема.
Краткое введение: у меня есть две колонки в базе данных, которые мне нужны для "объединения групп", в MySQL я просто использовал бы GROUP_CONCAT
, чтобы получить желаемый результат, в SQL Server 2017 и далее я бы использовал STRING_AGG
, проблема, которая у меня есть, в SQL Server 2012, который не имеет этой функции.
Теперь, под в обычных обстоятельствах я бы использовал FOR XML PATH('')
, чтобы получить решение, это нежизнеспособно, так как я запускаю запрос из редактора в третьем исходном приложении, ошибка, которую я получаю,
FOR XML PATH ('') нельзя использовать внутри курсора
Ради аргумента давайте предположим, что использование этой функции совершенно не подлежит сомнению.
Я пытался использовать рекурсивный CTE, однако он не жизнеспособен из-за времени выполнения, UNION ALL
требует слишком много ресурсов и не может выполняться должным образом (я использую данные для отчетов).
Я не буду публиковать скриншоты данных из-за их одинаковой чувствительности, представьте себе, что у вас есть только два столбца, один с идентификатором (несколько одинаковых идентификаторов) и столбец с данными, которые необходимо объединить (некоторая строка) , Цель состоит в том, чтобы объединить вторые столбцы для всех одинаковых идентификаторов в первых столбцах, очевидно, выделив их в процессе.
Пример: Ввод:
col1 col2
1 a
1 b
2 a
3 c
Выход:
col1 col2
1 a/b
2 a
3 c
У кого-нибудь есть креативная идея, как это сделать?