Я использую систему хронометража с бэкэндом SQL Server 2000. Мне нужно перечислить события с учителями и комнатами рядом с ними, это может быть больше 1, так что можно сделать, превратив несколько рядов комнат и учителей в + отдельные списки. Я использовал код ниже в прошлом:
DECLARE @Tutors as varchar(8000)
SELECT @Tutors = isnull(@Tutors + ' + ', '') + name
FROM (
SELECT CT_EVENT_STAFF.event_id, CT_EVENT_STAFF.weeks,
CT_STAFF.unique_name, CT_STAFF.name
FROM celcat200809.dbo.CT_EVENT_STAFF AS CT_EVENT_STAFF
LEFT OUTER JOIN celcat200809.dbo.CT_STAFF AS CT_STAFF
ON CT_EVENT_STAFF.staff_id = CT_STAFF.staff_id
WHERE event_id = @eventID
) As data_set
print @Tutors
Event_id - уникальное событие, оно будет работать только тогда, когда я знаю точный идентификатор, я не могу запустить его для каждого идентификатора.
Есть ли способ сделать это для каждого отдельного event_id без курсоров. Я видел возможное решение этой проблемы при использовании UDF, к сожалению, моя вторая проблема - система хронометража (CELCAT) создает новую базу данных для каждого года (я знаю, не спрашиваю), поэтому мне придется сделать SQL динамическим, т.е. база данных следующих лет будет celcat200910, я считаю, что динамический SQL не может быть запущен в UDF.
Пожалуйста, помните, что это SQL Server 2000