5

我的 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。

任何帮助将不胜感激。

4

1 回答 1

7

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

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

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

于 2013-02-06T11:08:47.727 回答