我在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可能是正确的方向,但它不是我想要的......
答案 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
,输出为:
答案 3 :(得分:0)
您希望对大于3的数字进行升序排序,然后对小于3的数字进行升序排序。所以这样做:
SELECT
-- blah
ORDER BY CASE WHEN SortColumn >= 3 THEN 1 ELSE 0 DESC, SortColumn ASC