SQL dynamic ORDER BY using alias

后端 未结 1 1163
甜味超标
甜味超标 2021-01-01 07:46

Using SQL Server, I can order a normal SELECT query using an alias:

SELECT   
   u.FirstName + \' \' + u.LastName as PhysicianName, COUNT(r.Id)          


        
相关标签:
1条回答
  • 2021-01-01 08:03

    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.

    ;WITH T
         AS (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 *
    FROM   T
    ORDER  BY CASE
                WHEN @orderby = 'PhysicianName' THEN PhysicianName
              END,
              CASE
                WHEN @orderby = 'ReferralsCount' THEN ReferralsCount
              END 
    
    0 讨论(0)
提交回复
热议问题