我正在使用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