在更新语句中排序 [英] order by in update statement

查看:116
本文介绍了在更新语句中排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试写一条更新语句,它需要在其中有Order By.我知道我可能必须使用sub select语句,我尝试了几种方法但未成功.请帮忙
以下是我的代码

谢谢,

I am trying to write an update statement and It needs to have Order By in there. I know I might have to use the sub select statement, I tried several way and was not successful. Please help
Below is my code

Thanks,

Declare 
@row as int
Set @row = 0
Update
dbo.CaseAssignments
SET
dbo.CaseAssignments.Rank1 = @row,
@row = @row +1

FROM ((dbo.CaseAssignments INNER JOIN dbo.LawFirms 
ON dbo.CaseAssignments.FirmID = dbo.LawFirms.FirmID) 
INNER JOIN dbo.v_Lawyers 
ON (dbo.CaseAssignments.LawyerID = dbo.v_Lawyers.LawyerID) 
AND (dbo.LawFirms.FirmID = dbo.v_Lawyers.FirmID)) 
INNER JOIN dbo.Cases ON dbo.CaseAssignments.CaseID = dbo.Cases.CaseID
WHERE dbo.CaseAssignments.CaseID=144
And dbo.CaseAssignments.FormFilterPDC = 1

order by dbo.LawFirms.FirmName ASC,
dbo.CaseAssignments.Rank ASC;

推荐答案

SQL2005解决方案

Solution for SQL2005

;WITH cte AS
    (
    SELECT  [dbo].[CaseAssignments].[Rank1],
            [NEW_RANK] = (ROW_NUMBER() OVER( ORDER BY [dbo].[LawFirms].[FirmName], [dbo].[CaseAssignments].[Rank] )) - 1
    FROM    [dbo].[CaseAssignments]
    JOIN    [dbo].[LawFirms]
            ON [dbo].[CaseAssignments].[FirmID] = [dbo].[LawFirms].[FirmID]
    JOIN    [dbo].[v_Lawyers]
            ON  [dbo].[CaseAssignments].[LawyerID]  = [dbo].[v_Lawyers].[LawyerID]
                AND
                [dbo].[LawFirms].[FirmID]           = [dbo].[v_Lawyers].[FirmID]
    JOIN    [dbo].[Cases]
            ON [dbo].[CaseAssignments].[CaseID] = [dbo].[Cases].[CaseID]
    WHERE   [dbo].[CaseAssignments].[CaseID]        = 144
            AND
            [dbo].[CaseAssignments].[FormFilterPDC] = 1
    )
UPDATE  cte
    SET [Rank1] = [NEW_RANK]


在插入或更新语句.数据如何进入表中都没有关系.
You don''t use "order by" in insert or update statements. It doesn''t matter how the data goes into the table.


这篇关于在更新语句中排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆