SQL动态ORDER BY使用别名
发布时间:2021-05-04 02:44:01 所属栏目: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.Las
使用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 – 使用带有nHibernate的CreateSQLQuery的SQL S
- sql – 从已连接表的列表中选择唯一列名
- sql-server-2008-r2 – 使用sp_启动用户存储过程的名称仍然
- sql-server – 如何获取SQL Server表中每行的实际数据大小?
- ssis延迟验证方法是什么?一文带你看懂
- 数据库设计 – 在逻辑/布尔数据库字段中使用[0,1]与[“Y”,
- sql-server-2005 – 在SQL Server 2005中分析非常大的结果集
- sql-server – 使用存储过程作为业务逻辑层
- sql-server – 安全地移动和创建新的tempdb文件
- sql-server – SQL Server如何确定缺失索引请求中的键列顺序