Skip to content Skip to sidebar Skip to footer

Sql Dynamic Order By Using Alias

Using SQL Server, I can order a normal SELECT query using an alias: SELECT u.FirstName + ' ' + u.LastName as PhysicianName, COUNT(r.Id) as ReferralsCount FROM Referra

Solution 1:

Column aliases defined in the SELECT can only be used in the ORDER BY on their own. Not in an expression.

You can adjust your original attempt as follows.

;WITHTAS (SELECT u.FirstName + ' ' + u.LastName AS PhysicianName,
                COUNT(r.Id)                    AS ReferralsCount
         FROM   Referrals r
                INNER JOIN Users u
                  ON r.PhysicianId = u.Id
         GROUP  BY r.PhysicianId,
                   u.FirstName,
                   u.LastName)
SELECT *
FROMTORDERBYCASEWHEN@orderby = 'PhysicianName' THEN PhysicianName
          END,
          CASE
            WHEN@orderby = 'ReferralsCount' THEN ReferralsCount
          END 

Post a Comment for "Sql Dynamic Order By Using Alias"