一条语句求最大值

yuzhiyin88 2005-10-19 03:50:39
表1:
pp1 pp2 pp3 pp4 pp5 number pp0
2 3 6 9 22
12 14 15 16 20
4 14 16 17 20
求一条sql语句:将每条记录相邻之相字段的最大差值写入uumber.如:第一条记录:(2 3 6 9 22)
2与3之间隔的数为0,6与3之间隔2,9与6之隔2,22与9之间隔12,12最大,将12写入number;依次类推
第二条的number应为3 第三条的number应为9 ,谢谢!

另求一条sql语句,将上题最大差值的位置写入pp0,如第一条记录的最大差值产生在9与22之间,则将pp0写入4,第二条记录的pp0写入4,第三条记录的pp0写入1
...全文
181 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
520zyb 2005-10-19
  • 打赏
  • 举报
回复
复杂了点,不过可以实现:
update a
set number = case when pp2-pp1>pp3-pp2
then case when pp2-pp1>pp4-pp3
then case when pp2-pp1>pp5-pp4 then pp2-pp1-1 else pp5-pp4-1 end
else case when pp4-pp3>pp5-pp4 then pp4-pp3-1 else pp5-pp4-1 end
end
else
case when pp3-pp2>pp4-pp3
then case when pp3-pp2>pp5-pp4 then pp3-pp2-1 else pp5-pp4-1 end
else case when pp4-pp3>pp5-pp4 then pp4-pp3-1 else pp5-pp4-1 end
end
end

UPDATE pp0 的时候就再按上面的判断一下
yuzhiyin88 2005-10-19
  • 打赏
  • 举报
回复
再顶!!!
zzit0721 2005-10-19
  • 打赏
  • 举报
回复
一条搞不定,允许游标做就好了
yuzhiyin88 2005-10-19
  • 打赏
  • 举报
回复
再顶!!!
97ce_twinkle 2005-10-19
  • 打赏
  • 举报
回复
哈哈,一条语句我搞不定,如果不是非要求一条语句的话,试试下面的

update table set number=0
update table set number=abs(pp2-pp1),pp0=1 where abs(pp2-pp1)>number
update table set number=abs(pp3-pp2),pp0=2 where abs(pp3-pp2)>number
update table set number=abs(pp4-pp3),pp0=3 where abs(pp4-pp3)>number
update table set number=abs(pp5-pp4),pp0=4 where abs(pp5-pp4)>number
yuzhiyin88 2005-10-19
  • 打赏
  • 举报
回复
再顶!!!
lizhaogui 2005-10-19
  • 打赏
  • 举报
回复
再顶!!!
lizhaogui 2005-10-19
  • 打赏
  • 举报
回复
顶!!
lizhaogui 2005-10-19
  • 打赏
  • 举报
回复
帮顶,我也想看看怎么做的
feitianbianfu16 2005-10-19
  • 打赏
  • 举报
回复
呵呵,上面错了!
feitianbianfu16 2005-10-19
  • 打赏
  • 举报
回复
1.update 表1 set number=max(max(max(abs(pp1-pp2),abs(pp2-pp3)),abs(pp3-pp4)),abs(pp4-pp5))

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧