簡體   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