SQL在CASE语句中按顺序排序

时间:2012-05-03 16:57:45

标签: tsql

我正试图弄清楚如何在ORDER BY子句中的CASE语句中涉及NEWID()(因此我可以以随机顺序返回结果),如下所示:

ORDER BY CASE WHEN @RankingMethod = 1 THEN intFoo ELSE NEWID() END DESC

显然这不起作用,因为它抛出“操作数类型冲突:uniqueidentifier与int不兼容”

有没有办法构造这个ORDER BY来让它随机排序或由指定的列排序?

1 个答案:

答案 0 :(得分:4)

你可以做到

ORDER BY CASE WHEN @RankingMethod = 1 THEN intFoo ELSE -1 END DESC, newid()

如果需要,请选择其他“魔术值”而不是-1