【发布时间】:2019-05-17 14:02:02
【问题描述】:
下面是select语句
select *
from #final
order by
case
when [Col1] in (select top 10 [Col1] from #take order by [Col2] desc)
then 0
else 2
end
我上面的select语句返回的结果如下
Col1 Col2
--------------------------------------
App 86748
AppService 832
BK 21227
Cap 160272
Fukusima 1634
McBaa 1727
Others 6718
但是,我想得到这个结果:
Col1 Col2
--------------------------------------
Cap 160272
App 86748
BK 21227
McBaa 1727
Fukusima 1634
AppService 832
Others 6718
如何做到这一点?谢谢。
【问题讨论】:
-
您的排序逻辑与您认为的不太一样。它正在获取 Col2 的前 10 行,并将它们按某种顺序排列,然后按某种顺序排列其余数据。为什么我说“一些命令”?因为那两组数据根本没有排序。您需要按顺序排列第二列。第二列可能需要另一个 case 表达式才能在最后得到你想要的值。
-
我认为:结束,[Col2] desc 会起作用..让我试试。
-
如果“AppService”和“Others”不在前 10 个查询中,这可能会起作用。但我们不知道,因为您没有提供样本数据。
标签: sql-server tsql sql-server-2017