use*_*270 1 sql sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012
众所周知,一般排序是使用order by.我想要执行的那种不同.我希望表格n中间的最小长度值是其顶部和底部的最大长度值.一半应该是下降,另一半应该是上升.你们能帮忙吗?这是一个面试问题.
这是一种方式:
;WITH CTE AS
(
SELECT *,
RN = ROW_NUMBER() OVER(ORDER BY LEN(YourColumn))
FROM dbo.YourTable
)
SELECT *
FROM CTE
ORDER BY RN%2, (CASE WHEN RN%2 = 0 THEN 1 ELSE -1 END)*RN DESC
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
113 次 |
| 最近记录: |