我正在使用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
的事项标识是唯一的事件,这只会工作的时候我知道确切的ID,我不能为每一个ID运行它。
有没有办法做到这一点,每个单独的event_id没有游标。不幸的是,我的第二个问题是时间表系统(CELCAT)为每年创建一个新的数据库(我知道不问),所以我将不得不使SQL动态化明年的数据库将是celcat200910,我相信动态SQL不能在UDF中运行。
请记住这是SQL Server 2000中
关于DB的安排:听起来很粗糙。是的,UDF中不允许动态SQL。你可能会发现一些有用的帮助,在这个线程的多个数据库工作:http://stackoverflow.com/questions/1037174/sql-use-statement-with-variable/1037961#1037961 ...但是,我认为最好的解决方案会试图找到某种方式将数据放在某个数据库中 - 但这可能超出了您的权限和责任范围。 – 2009-06-25 15:45:47
我将大部分数据放入考勤数据和类似数据的独立数据库中。我使用隔夜过程来填充这些东西,但是这个特定查询需要生效 – PeteT 2009-06-26 00:52:39