sql-server – T-SQL GROUP BY:包含其他分组列的最佳方式

前端之家收集整理的这篇文章主要介绍了sql-server – T-SQL GROUP BY:包含其他分组列的最佳方式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是一个 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

这样,您可以通过操作避免额外的组,您可以获取所需的任何数据.此外,您还有机会在某些情况下良好利用索引(如果您没有返回完整的信息),并且可以更好地与分页结合使用.

猜你在找的MsSQL相关文章