根据我下面的代码,我使用cursor
获取WInstance
表中的所有信息。但是,由于cursor
,我的查询可能会出现效果问题。有没有办法使用嵌套选择而不是cursor
?请与我分享你的想法。
我的业务是仅获得相同的ItemID
,SequenceID
,TaskStatus
,ListID
,WebID
,SiteID
中的一个。
从技术上讲,加入表中有很多相同的ItemID
,SequenceID
,TaskStatus
,ListID
,WebID
,SiteID
具有WInstance
的{{1}}和WProgress
。因此,我使用AssignTask = 'Assign task'
和distinct
进行循环,仅使用cursor
获得前1名。
这是我的代码:
order by
答案 0 :(得分:0)
您不需要使用光标。将其替换为以下查询
SELECT ItemID, SequenceID, TaskStatus, ListID, WebID, SiteID
FROM
(
SELECT RN = ROW_NUMBER() OVER (PARTITION BY WP.CurrentActivityTitle,
WI.ItemID, WP.SequenceID,
WI.ListID, WI.WebID, WI.SiteID
ORDER BY TimeStamp DESC),
WI.ItemID ,
WP.SequenceID ,
CASE WHEN WP.ActivityComplete = 0
THEN 'Not Started'
ELSE 'Completed'
END AS 'TaskStatus' ,
WI.ListID ,
WI.WebID ,
WI.SiteID
FROM dbo.WInstance WI
INNER JOIN dbo.WProgress WP ON WI.InstanceID = WP.InstanceID
WHERE WP.CurrentActivityTitle = @AssignTask
) D
WHERE RN = 1;