Използвам система за разписание с бекенд на 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