DenSyo
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору FreePaul STRING_AGG агрегатная функция и предполагает использование при группировке. поля используемые в STRING_AGG не нужно группировать рекомендую использовать вместо STRING_AGG старый добрый GROUP_CONCAT в таких случаях, он проще в использовании и даёт больше возможностей в формировании строки. по сравнению со STRING_AGG у него только один недостаток, если в запросе использовать несколько GROUP_CONCAT, то строки передаваемые им невозможно отсортировать по внешнему ключу и они всегда будут в произвольном порядке относительно друг-друга. зато позволяет строить строку из нескольких полей и использовать DISTINCT внутри себя. Код: SELECT v_R_System.Netbios_Name0 as PCName, v_R_System.User_Name0 As UserName, v_R_User.Full_User_Name0 as FullUserName, Computer_System_DATA.Manufacturer00 as PCManufacturer, Computer_System_DATA.Model00 as PCModel, yourbase.dbo.GROUP_CONCAT_D(Netcard_DATA.Name00 + ' MAC:' + Netcard_DATA.MacAddress00 + ' IP:' + substring(Network_DATA.IPAddress00,0,charindex(',',Network_DATA.IPAddress00)), '/') as Netcards, yourbase.dbo.GROUP_CONCAT_D('disk: ' + DISK_DATA.Model00 + ' size:' + DISK_DATA.Size00, '/') as Disks, yourbase.dbo.GROUP_CONCAT_D('cd: ' + CD_ROM_DATA.MediaType00 + ' name:' + CD_ROM_DATA.Name00, '/') as CD_ROMs FROM ... | поля используемые внутри GROUP_CONCAT_D не группируете, остальные, не в агрегатных функциях, группируете. | Всего записей: 219 | Зарегистр. 19-01-2008 | Отправлено: 09:55 09-09-2023 | Исправлено: DenSyo, 04:36 10-09-2023 |
|