SQL Server をSELECT
使用すると、エイリアスを使用して通常のクエリを注文できます。
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
ORDER BY
PhysicianName
ただし、 dynamic で同じことをしようとしていますORDER BY
:
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
ORDER BY
CASE WHEN @orderby = 'PhysicianName' THEN PhysicianName END,
CASE WHEN @orderby = 'ReferralsCount' THEN ReferralsCount END
次のエラーが発生します。
メッセージ 207、レベル 16、状態 1、行 10
列名 'PhysicianName' が無効です。
メッセージ 207、レベル 16、状態 1、行 11 列名 'ReferralsCount' が無効です。