sql-server – T-SQL GROUP BY:包含其他分组列的最佳方式
发布时间:2020-12-12 08:38:15 所属栏目:MsSql教程 来源:网络整理
导读:我是一个 MySQL用户,试图将一些事情移交给MS SQL Server. 我加入了几张表,并通过GROUP BY汇总了一些列. 一个简单的例子就是员工和项目: select empID,fname,lname,title,dept,count(projectID)from employees E left join projects P on E.empID = P.projLea
我是一个
MySQL用户,试图将一些事情移交给MS SQL Server.
我加入了几张表,并通过GROUP BY汇总了一些列. 一个简单的例子就是员工和项目: select empID,fname,lname,title,dept,count(projectID) from employees E left join projects P on E.empID = P.projLeader group by empID …这可以在MySQL中工作,但MS SQL更严格,并且要求将所有内容都包含在聚合函数中,或者是GROUP BY子句的一部分. 所以,当然,在这个简单的例子中,我假设我可以在group by子句中加上额外的列.但是我正在处理的实际查询是相当复杂的,并且包括对一些非聚合列执行的一些操作,例如,它会被真正地丑陋,试图将它们全部包含在group by子句中. 那么有更好的方法来做到这一点吗? 解决方法你可以让它处理这些行:select e.empID,projectIDCount from ( select empID,count(projectID) as projectIDCount from employees E left join projects P on E.empID = P.projLeader group by empID ) idList inner join employees e on idList.empID = e.empID 这样,您可以通过操作避免额外的组,您可以获取所需的任何数据.此外,您还有机会在某些情况下良好利用索引(如果您没有返回完整的信息),并且可以更好地与分页结合使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |