sql排序加提取问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 09:37:10
一张表有a,b,c字段,现在要查
如果C=1时按B排升序,如果C=2时按B倒序。
最后取Top 1
这语句怎么写
a b c
1 1 1
2 2 1
3 3 2
4 4 2
查询出来的结果为
a b c
1 1 1
2 2 1
4 4 2
3 3 2 然后取TOP1 这样查有原因的,就是如果 C都为2时可以取到最大值,都为1时取最小值,当有=1,有=2时取=1的最小值。我是在.net里做的,在代码里可以实现,我想有没一个SQL语句解决的?

写个存储过程或函数吧

alter procedure p_test(@input int) as
begin
if @input = 1
begin
select top 1 * from 表 order by B
end
else if @input = 2
begin
select top 1 * from 表 order by B desc
end
end

select top 1 * from table where c = 1 order by b asc

select top 1 * from table where c = 2 order by b desc

select top 1 * from 表名 order by (case when 列名c=1 then '列名b asc' when 列名c=2 then '列名b desc' end)

你的c字段只有二个判断的固定值1与2吗?如果没有其它的值,可以在order by后面再加上:列名c asc
修改如上sql就是:
select top 1 * from 表名 order by (case when 列名c=1 then '列名b asc' when 列名c=2 then '列名b desc' end), 列名c asc