sql2005 to sql2000 (with关键字)
由于with在sql2000中不可用,需要将下面语句转换一下:
WITH t AS ( SELECT a.ID AS aID,b.id AS bID, b.bGUID FROM ( SELECT DISTINCT t.guid, t.ID, ta.guid AS bGUID FROM dbo.PMS_Task t, dbo.PMS_TaskAllocation ta WHERE CHARINDEX(','+LTRIM(t.id)+',',','+ta.TaskIDs+',') > 0 and t.projectid = @PKID ) b, ( SELECT guid, ID FROM dbo.PMS_Task WHERE projectid = @AutoID ) a WHERE b.guid = a.guid ), t1 AS ( SELECT STUFF(( SELECT ','+ RTRIM(aID) FROM t AS A WHERE CHARINDEX(RTRIM(bID),TaskIDs) > 0 FOR XML PATH('')),1,1,'') AS Name, TaskIDs FROM PMS_TaskAllocation AS B ) UPDATE PMS_TaskAllocation SET PMS_TaskAllocation.TaskIDs = Name FROM t1 WHERE PMS_TaskAllocation.TaskIDs = t1.TaskIDs and PMS_TaskAllocation.ProjectID = @AutoID
SELECT a.ID AS aID,b.id AS bID, b.bGUID into #t FROM ( SELECT DISTINCT t.guid, t.ID, ta.guid AS bGUID FROM dbo.PMS_Task t, dbo.PMS_TaskAllocation ta WHERE CHARINDEX(','+LTRIM(t.id)+',',','+ta.TaskIDs+',') > 0 and t.projectid = @PKID ) b, ( SELECT guid, ID FROM dbo.PMS_Task WHERE projectid = @AutoID ) a WHERE b.guid = a.guid SELECT STUFF(( SELECT ','+ RTRIM(aID) into #t1 FROM #t AS A WHERE CHARINDEX(RTRIM(bID),TaskIDs) > 0 FOR XML PATH('')),1,1,'') AS Name, TaskIDs FROM PMS_TaskAllocation AS B UPDATE PMS_TaskAllocation SET PMS_TaskAllocation.TaskIDs = Name FROM #t1 WHERE PMS_TaskAllocation.TaskIDs = #t1.TaskIDs and PMS_TaskAllocation.ProjectID = @AutoID--可以用临时表替代with 公用表达式
[解决办法]
可以参考下:http://www.cnblogs.com/myaspnet/archive/2011/06/15/2081536.html
[解决办法]
UPDATE PMS_TaskAllocation SET PMS_TaskAllocation.TaskIDs = Name FROM ( SELECT STUFF(( SELECT ','+ RTRIM(aID) FROM ( SELECT a.ID AS aID,b.id AS bID, b.bGUID FROM ( SELECT DISTINCT t.guid, t.ID, ta.guid AS bGUID FROM dbo.PMS_Task t, dbo.PMS_TaskAllocation ta WHERE CHARINDEX(','+LTRIM(t.id)+',',','+ta.TaskIDs+',') > 0 and t.projectid = @PKID ) b, ( SELECT guid, ID FROM dbo.PMS_Task WHERE projectid = @AutoID ) a WHERE b.guid = a.guid ) AS A WHERE CHARINDEX(RTRIM(bID),TaskIDs) > 0 FOR XML PATH('')),1,1,'') AS Name, TaskIDs FROM PMS_TaskAllocation AS B ) t1 WHERE PMS_TaskAllocation.TaskIDs = t1.TaskIDs and PMS_TaskAllocation.ProjectID = @AutoID