【问题标题】:T SQL case statement with primary and secondary order by parameterT SQL case语句按参数主次排序
【发布时间】:2013-01-21 12:55:44
【问题描述】:

我的 SQL 语句有问题: 我使用 SELECT 语句,然后在使用 order by 时使用 CASE。

SELECT .....
ORDER BY
CASE WHEN @sort = 'ND' THEN name END DESC,
CASE WHEN @sort = 'NA' THEN name END,
CASE WHEN @sort = 'AD' THEN (isAuthorized)  END DESC,
CASE WHEN @sor = 'AA' THEN (isAuthorized) END

isAuthorized 是一个 BIT 值,所以我想在那里使用二级订单。

我尝试了类似的方法:

SELECT .....
ORDER BY
CASE WHEN @sort = 'ND' THEN name END DESC,
CASE WHEN @sort = 'NA' THEN name END,
CASE WHEN @sort = 'AD' THEN (isAuthorized, name )  END DESC,
CASE WHEN @sort = 'AA' THEN (isAuthorized, name ) END       

但它不起作用。

我使用 SQL Server 2008。

任何帮助将不胜感激。

【问题讨论】:

    标签: tsql sql-order-by case


    【解决方案1】:

    如果您想先按name 对结果集进行排序,然后在@sort = ND 时按isAuthorized 排序,请使用此查询:

    SELECT .....
    ORDER BY
    CASE WHEN @sort = 'ND' THEN name END DESC,
    CASE WHEN @sort = 'ND' THEN isAuthorized END
    

    您可以组合CASE 子句。我希望你明白了。

    【讨论】:

    • 我想要相反,首先是 isAuthorized,然后是名称(因为我按许多列排序)。但是您的回答为我指明了正确的方向,因为我不知道如何按语句组合多个订单。谢谢一堆...评价并标记为答案;)
    猜你喜欢
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多