按动态排序,多个字段

时间:2016-12-01 09:21:10

标签: sql sql-server tsql

我的一个SQL查询中有以下语句:

var options = {
                legend: { textStyle: { fontSize: 78  //size of the legend 
                } }
              }

但是我收到了一个错误:

Msg 156,Level 15,State 1,Procedure Line 43 [Batch Start Line 4] 关键字“ASC”附近的语法不正确。

我尝试过搜索示例,但它们都涉及到一个字段,而不是多个,因为我正在尝试这样做。

有人可以建议我如何纠正上述情况吗?

3 个答案:

答案 0 :(得分:4)

您可以重复相同的CASE,方向位于END的{​​{1}}之后:

CASE

答案 1 :(得分:0)

这个怎么样

order by 
 (CASE @Ordering when 'asc' then 1 when 'desc' then -1 else 0 end)*TimeIn ASC,
 (CASE @Ordering when 'asc' then 1 when 'desc' then -1 else 0 end)*DATEPART(WEEK, TimeIn) ASC

答案 2 :(得分:0)

我们可以用很短的方式执行相同的操作,请尝试:

ORDER BY  
CASE WHEN @Ordering = 'asc'  THEN 
    CONCAT(YEAR(TimeIn),DATEPART(WEEK, TimeIn)) 
END ASC, 
CASE WHEN @Ordering = 'desc' THEN 
    CONCAT(YEAR(TimeIn),DATEPART(WEEK, TimeIn)) 
END DESC

注意:CONCAT可用于SQL Server> = 2012,在较低版本中我们可以使用+代替连接。

相关问题