关于MAX这个SQL函数....(100分)

  • 主题发起人 主题发起人 cAkk
  • 开始时间 开始时间
Create Procedure showmax
/*
(
)
*/
As
set nocount on
declare @maxa1 int
declare @maxa2 int
declare @maxa3 int
declare @maxa4 int
select @maxa1=max(a1) from table1
select @maxa2=max(a2) from table1
select @maxa3=max(a3) from table1
select @maxa4=max(a4) from table1
if @maxa1>@maxa2
select @maxa2=@maxa1
if @maxa3>@maxa4
select @maxa4=@maxa3
if @maxa2>@maxa4
select @maxa4=@maxa2
select @maxa4 as maxall
return
 
还有没有发言? 如果没有我就准备给分了.
 
试试这个:
select max(xxx) from
(select max(a1) as xxx from table
select max(a2) as xxx from table
select max(a3) as xxx from table
select max(a4) as xxx from table
)
 
Sory,刚才写错了,
select max(xxx) from
(select max(a1) as xxx from table
union
select max(a2) as xxx from table
union
select max(a3) as xxx from table
union
select max(a4) as xxx from table
)
 
等一下,我还要发言:
a1:max(a1)
a2:max(a2)
a3:max(a3)
a4:max(a4)

(a1+a1+|a1-a2|)/2即a1,a2中的max
(a3+a4+|a3-a4|)/2即a3,a4中的max
按同样的公式再把上述的结果计算一下既a1,a2,a3,a4的max(生成一个大公式)
只是这一条SQL语句会很长.
 
fx: 你的方法看起来有些意思,语句长我到不怕,问题是我写不出来,能帮我写出来吗?
 
select ((max(a1)+max(a2)+abs(max(a1)-max(a2)))/2+
(max(a3)+max(a4)+abs(max(a3)-max(a4)))/2+
abs((max(a1)+max(a2)+abs(max(a1)-max(a2)))/2-
(max(a3)+max(a4)+abs(max(a3)-max(a4)))/2))/2 from tablename
真的很长啊!试过OK!

 
fx的办法完美地解决了问题.
 
后退
顶部