select *from A order by a,case when a=1 then -b else b end
select convert(int, a)*convert(decimal(10,2),b) as order1,a,b from a order by order1 desc,a asc只在a 的值为0或1的情况下适用
CrazyFor的方法很好!Simple CASE function:CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END Searched CASE function:CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END
select * from A order by a,case when a=1 then -b else b end select * from A order by a,case when a=0 then b else -b end
b字段是个字符串,不过里面是数字。为什么这样不行 SELECT * FROM A ORDER BY a, CASE WHEN a = 1 THEN -CASE (b AS int) ELSE CASE(b AS int) END
TRY: SELECT * FROM A ORDER BY a, CASE WHEN a = 1 THEN cast(-b AS int) ELSE CASt(b AS int) END
SELECT * FROM A ORDER BY a, CASE WHEN a = 1 THEN -CAST (b AS int) ELSE CAST(b AS int) END
create table #p (a int,b char(10))insert #p values (1,'dae') insert #p values (1,'efe') insert #p values (0,'q') insert #p values (0,'eve') insert #p values (0,'mm') insert #p values (1,'a') insert #p values (1,'sleonb') insert #p values (1,'gedd') SELECT * FROM #p ORDER BY a, CASE WHEN a = 1 THEN -CAST (b AS int) ELSE CAST(b AS int) END 不行
TRY: SELECT * FROM #p ORDER BY a, CASE WHEN a = 1 THEN reverse(left(rtrim(b)+'zzzzzzzzzz',10)) ELSE b END
order by order1 desc,a asc只在a 的值为0或1的情况下适用
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END Searched CASE function:CASE
WHEN Boolean_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END
select * from A order by a,case when a=0 then b else -b end
SELECT *
FROM A
ORDER BY a, CASE WHEN a = 1 THEN -CASE (b AS int) ELSE CASE(b AS int) END
SELECT *
FROM A
ORDER BY a, CASE WHEN a = 1 THEN cast(-b AS int) ELSE CASt(b AS int) END
FROM A
ORDER BY a, CASE WHEN a = 1 THEN -CAST (b AS int) ELSE CAST(b AS int) END
insert #p values (1,'efe')
insert #p values (0,'q')
insert #p values (0,'eve')
insert #p values (0,'mm')
insert #p values (1,'a')
insert #p values (1,'sleonb')
insert #p values (1,'gedd')
SELECT *
FROM #p
ORDER BY a, CASE WHEN a = 1 THEN -CAST (b AS int) ELSE CAST(b AS int) END
不行
SELECT *
FROM #p
ORDER BY a, CASE WHEN a = 1 THEN reverse(left(rtrim(b)+'zzzzzzzzzz',10)) ELSE b END