在sqlserver2000中,用什么语句能求出表中一行的最大值?

来源:百度知道 编辑:UC知道 时间:2024/05/12 16:41:23
能否示例说明?

MAX是求一列的最大值,不是求一行的最大值。
事实上,所有的集计函数和大小关系函数都是针对于列设计的。

如果希望在一行里面做操作,我能想到的唯一方法是用游标
针对于你这个问题,你需要用到两个游标
第一个游标用来遍历每条记录
第二个游标用来寻找每条记录的最大值
找到以后,依次存储,这样就得到表的一行的最大值了

答案补充:
上面的答案有一个问题 ,第二个游标没法实现,目前我给出一个在知道列数和列名的情况下的例子。更加通用的需要再考虑
例:
假设A表里面有x,y,z3列,并且这3列都是int型列
create table ##temp(max_value int)
declare @x int
declare @y int
declare @z int
declare @max int
declare curRowMax cursor for select x,y,z from A
open curRowMax
fetch next from curRowMax into @x,@y,@z
while @@fetch_status= 0
begin
set @max=@x
if(@y>@max) set @max=@y
if(@z>@max) set @max=@z
insert into ##temp values(@max)
fetch next from curRowMax into @x,@y,@z
end
select * from ##temp
没有SQL环境,所以做不了语法检查,如果有语法上的低级错误,请原谅。
但大概的逻辑大概是这样的。

select max(...) from table

MAX()函数用来取最大值

Maz()