Я использую систему расписания с бэкэнд 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 является уникальным событием, это будет работать только тогда, когда я знаю точно ID, я не могу запустить его для каждого ID.
Есть ли способ сделать это для каждого отдельного event_id без курсоров. Я видел возможное решение этого при использовании UDF, к сожалению, моя вторая проблема заключается в том, что система расписания (CELCAT) создает новую базу данных для каждого года (я знаю, что не спрашиваю), поэтому мне придется сделать динамику SQL, т. Е. следующая база данных будет celcat200910, я считаю, что динамический SQL не может быть запущен в UDF.
Пожалуйста, помните, что это SQL Server 2000
На устройствах БД: звучит грубо. Да, динамический SQL в UDF не разрешен. Вы можете найти полезную помощь в этом потоке для работы с несколькими БД: http://stackoverflow.com/questions/1037174/sql-use-statement-with-variable/1037961#1037961 ... однако, я думаю, что наилучшим решением было бы попытайтесь найти способ разместить данные в одной БД где-нибудь - но это может быть выше и выше вашей цели/вызова долга. –
Я помещаю большую часть данных в отдельную базу данных для данных посещаемости и т.п. Я использую ночную процедуру для заполнения этого материала, однако этот конкретный запрос должен быть активным – PeteT