Click here to Skip to main content
15,885,951 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
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;
Posted
Updated 5-May-11 12:28pm
v2
Comments
HimanshuJoshi 5-May-11 18:29pm    
Edited to add pre tags around code

Solution for SQL2005

SQL
;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]
 
Share this answer
 
You don't use "order by" in insert or update statements. It doesn't matter how the data goes into the table.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900