Access 2010 SQL--在交叉表查询中按聚合函数排序行

时间:2013-11-29 09:16:21

标签: sql sql-order-by ms-access-2010 aggregate-functions crosstab

我想为每个(类别)看到 SUM (转化支出),并通过另一个字段(Media_Type)进行转换。下面的代码适用于此,除了我添加的ORDER BY子句,因为我希望我的输出行按每行的 开销排序。 / p>

TRANSFORM  Sum([Spending])

SELECT     [Category],
           SUM([Spending])
FROM       [Data]
GROUP BY   [Category]
ORDER BY   SUM([Spending]) DESC

PIVOT      [Media_Type] IN ("TV","Print","Internet")
;

当我添加ORDER BY命令时,我收到错误:'ORDER BY子句中不能有聚合函数'。我该如何解决这个问题并将我的行分组并汇总?

2 个答案:

答案 0 :(得分:1)

This article表示您的SQL应该有效,另一种选择(但绝不是很好)选项可以将您的查询移到另一个查询的FROM部分,例如

SELECT 
    * 
FROM (
    -- Your Query Here (but you'll have to name the SUM column) --
) x 
ORDER BY 
    columnName DESC` 

我猜测Access没有SQL Server中可用的OVER子句,否则可能会使用它。

答案 1 :(得分:0)

TRANSFORM  Sum([Spending]) 

选择[类别],SUM([支出])作为总和FROM [数据] GROUP BY [类别] ORDER BY sum DESC

PIVOT [Media_Type] IN(“电视”,“打印”,“互联网”) ;