【发布时间】:2014-03-04 18:21:57
【问题描述】:
以下 SQL 代码是较大 SQL 语句的示例。我的问题是如何在SELECT ROW_NUMBER() 中执行CASE 多列ORDER BY,类似于下面的注释行。提供的代码有效,但我需要按两列排序。
我正在使用 MSSQL 2008
SELECT TOP(50)
ROW_NUMBER() OVER(ORDER BY CASE WHEN @OrderBy = 'Total' THEN SUM(TotalViews) ELSE SUM(LastMonthViews) END DESC) AS Position
,SUM(Albums.TotalViews) AS TotalViews
,SUM(Albums.LastMonthViews) AS LastMonthViews
FROM Albums
--The code to be implemented in the SELECT ROW_NUMBER()
ORDER BY SUM(LastMonthViews) DESC, SUM(TotalViews) DESC
【问题讨论】:
-
你有想要的结果的例子吗?
-
我会尝试提出并更新问题。
-
查询中有
GROUP BY吗? -
@ypercube 是的,我有,这段代码是大查询的摘录。
-
你不能
ORDER BY LastMonthViews, TotalViews吗?这些是您为这些聚合创建的别名;它们应该在 ORDER BY 子句的范围内。