当前位置:  开发笔记 > 后端 > 正文

T-SQL GROUP BY:包含其他分组列的最佳方法

如何解决《T-SQLGROUPBY:包含其他分组列的最佳方法》经验,为你挑选了1个好方法。

我是一个试图将一些东西移植到MS SQL Server的MySQL用户.

我正在加入几个表,并通过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子句中会非常难看.

那么有更好的方法吗?



1> eglasius..:

你可以让它与这些行周围的东西一起工作:

select e.empID, fname, lname, title, dept, 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

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

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有