繁体   English   中英

SQL Server对子查询使用不同的分组依据和排序依据列

[英]SQL Server use Different Group By and Order By Columns with Sub-query

我正在尝试仅通过使用分组集的查询显示分组中的某些列。 我也想仅按某些其他列进行排序。

为此,我使用了子查询。

我有两个问题:

  1. 有没有更好的方法来对差异列进行分组和排序?

  2. 通过这种方式使用子查询是否存在性能问题?

查询:

SELECT Region, State, Sales FROM (
    SELECT RegionID, Region, StateID, State, SUM(Sales) AS Sales 
    FROM Sales 
        GROUP BY 
            GROUPING SETS(
                (RegionId, Region, StateID, State), 
                (StateId, State), 
                ()
            )
    ) As T1 
ORDER BY RegionID, StateID

之所以要这样做,是因为我想按与分组依据不同的列进行排序。 但是由于我使用的是按查询分组,因此必须使用所有列。

您的查询很好。 但是,我认为您不需要子查询:

SELECT Region, State, SUM(Sales) AS Sales
FROM Sales
GROUP BY GROUPING SETS( (Region, State), (State), () ) 
ORDER BY MAX(RegionID), MAX(StateID);

您可以仅在ID上使用聚合函数以进行订购。

注意,子查询的性能损失很小。 我能想到的唯一问题是聚合密钥稍长一些,因此性能损失可能很小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM