SQL动态ORDER BY使用别名
发布时间:2021-04-03 12:15:30 所属栏目:MsSql教程 来源:网络整理
导读:使用SQL Server,我可以使用别名来命令正常的SELECT查询: SELECT u.FirstName + ' ' + u.LastName as PhysicianName,COUNT(r.Id) as ReferralsCountFROM Referrals r INNER JOIN Users u ON r.PhysicianId = u.IdGROUP BY r.PhysicianId,u.FirstName,u.LastNa
|
使用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 但是,尝试使用动态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.LastName
ORDER BY
CASE WHEN @orderby = 'PhysicianName' THEN PhysicianName END,CASE WHEN @orderby = 'ReferralsCount' THEN ReferralsCount END
产生以下错误:
解决方法SELECT中定义的列别名只能在ORDER BY中单独使用.不在表达中.您可以按如下方式调整原始尝试. ;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.LastName)
SELECT *
FROM T
ORDER BY CASE
WHEN @orderby = 'PhysicianName' THEN PhysicianName
END,CASE
WHEN @orderby = 'ReferralsCount' THEN ReferralsCount
END (编辑:天瑞地安资讯网_保定站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – 为聚合使用索引视图 – 太好了,不是真的吗?
- sql – ORA-00907缺少右括号问题 – 通过内部插入查询选择顺
- sql-server – 如何在SQL Server 2008中分配整个Active Dir
- SQL语句中的全局变量
- sql-server – 资源池“internal”中没有足够的系统内存来运
- haskell – 如何在Yesod应用程序中的GHCi中执行数据库查询
- sql-server – SQL默认实例名称
- sql – Oracle DB引用列名
- 数据库设计 – 如何为消费者应用程序设计“NOSQL”数据库(例
- 数据库设计 – 空间索引可以帮助“范围 – 按限制排序”查询
站长推荐
热点阅读

