Мой вклад в таблицу
id value
1 23
1 22
1 24
2 55
2 44
мой вывод должен быть
1 23|22|24
2 55|44
Пожалуйста, помогите в предоставлении запроса, который может работать в базе данных sybase.
Мой вклад в таблицу
id value
1 23
1 22
1 24
2 55
2 44
мой вывод должен быть
1 23|22|24
2 55|44
Пожалуйста, помогите в предоставлении запроса, который может работать в базе данных sybase.
Вы можете сделать это с помощью row_number()
, который должен быть доступен в вашей версии Sybase:
select id,
stuff((max(case when seqnum = 1 then '|' + value else '' end) +
max(case when seqnum = 2 then '|' + value else '' end) +
max(case when seqnum = 3 then '|' + value else '' end) +
max(case when seqnum = 4 then '|' + value else '' end)
), 1, 1, '') as vals
from (select t.*, row_number() over (partition by id order by value) as seqnum
from t
) t
group by id;
list()
,group_concant()
иFOR XML/PATH
, поэтому вам нужно будет использовать циклическую конструкцию, например, создать определяемую пользователем функцию, которая просматриваетvalue
s для заданногоid
- имейте в виду, что вы можете: a) создать функцию, специфичную для этого набора таблиц/столбцов, или б) создать (более) общий UDF, но тогда вызов функции основного запроса может быть немного более запутанным (см. универсальная пользовательская функция) - person markp-fuso   schedule 21.06.2018