具有自定义“max”整数的SQL Server中的OrderBy

时间:2017-07-06 01:32:30

标签: sql sql-server sql-order-by

我在SQL Server中有一个包含整数排序列的表。列中的所有值均为正数。我想对表进行排序,以便选择“max”值(如3),并且所有值都相对于3递减。只要列出数据库中的每个项目,“降序”顺序实际上并不重要。

数据库示例:

Value SortColumn
A     1
B     5
C     4
D     3
E     0
F     2

所需输出(3为“最大”):

Value SortColumn
D        3
C        4
B        5
E        0
A        1
F        2

似乎这similar post可能是正确的方向,但它不是我想要的......

4 个答案:

答案 0 :(得分:1)

我想你想要:

$ /usr/bin/java -loadClassifier
Unrecognized option: -loadClassifier
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

答案 1 :(得分:1)

您可以使用java -version 表达式:

CASE

答案 2 :(得分:0)

我已经测试了Tim和Gordon的解决方案,但结果与你想要的不匹配。

我的解决方案很长。看看:

DECLARE @table TABLE (Value CHAR,SortColumn INT)
INSERT INTO @table VALUES ('A',1),('B',5),('C',4),('D',3),('E',0),('F',2)

DECLARE @max INT=3;

;WITH CTE AS(
SELECT 1-ROW_NUMBER() OVER (ORDER BY SortColumn DESC) RN, * FROM @table WHERE SortColumn >=@max 
UNION
SELECT ROW_NUMBER() OVER (ORDER BY SortColumn) RN,* FROM @table WHERE SortColumn <@max
)
SELECT Value,SortColumn FROM CTE ORDER BY RN

,输出为:

enter image description here

答案 3 :(得分:0)

您希望对大于3的数字进行升序排序,然后对小于3的数字进行升序排序。所以这样做:

SELECT 
   -- blah
ORDER BY CASE WHEN SortColumn >= 3 THEN 1 ELSE 0 DESC, SortColumn ASC