问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sql server 2005 select update 复杂计算 批量更新

发布网友 发布时间:2022-04-09 01:20

我来回答

1个回答

热心网友 时间:2022-04-09 02:50

--测试环境mssql2008
--建表
Create Table T
(
    id int,
    riqi datetime,
    daima Varchar(10),
    kaipan numeric(18,2),
    zuigao numeric(18,2),
    zuidi numeric(18,2),
    zhenfu numeric(18,6)
)

--插入数据
insert into t values(1,'2015-10-1','600000',1,7,1,null)
insert into t values(2,'2015-10-2','600000',2,8,2,null)
insert into t values(3,'2015-10-3','600000',3,9,3,null)
insert into t values(4,'2015-10-4','600000',4,10,4,null)
insert into t values(5,'2015-10-5','600000',5,11,5,null)
insert into t values(6,'2015-10-6','600000',6,12,6,null)
insert into t values(7,'2015-10-1','700000',5,13,7,null)
insert into t values(8,'2015-10-2','700000',4,14,8,null)
insert into t values(9,'2015-10-3','700000',3,15,7,null)
insert into t values(10,'2015-10-4','700000',2,16,8,null)

--更新
--思路:按daima分组riqi排序产生记录号id1,当id1<=3时取null,否则取出id1-3到id1-1记录zuida的最大值减去zuixiao的最小值,然后除以id1 = A.id1-3对应的kaipan,最后把计算结果更新给zhenfu
With CT
AS
(
select *,ROW_NUMBER() over(partition by daima order by riqi) As id1  from t
)
Update T Set zhenfu=B.Rst
From (
Select *,Case When id1<=3 then null else
Round(
(
(select max(zuigao) From CT Where daima=A.daima And id1 between A.id1-3 and A.id1-1)- 
(select min(zuidi) From CT Where daima=A.daima And id1 between A.id1-3 and A.id1-1)
)/(select kaipan From CT Where daima=A.daima And id1 = A.id1-3),5) 
End  As Rst
From CT A
) B Where T.id=B.id 

/*
计算公式
id=4  Select (9-1)/1
id=5  Select (10-2)/2
id=6  Select (11-3)/3.0
id=10 select (15-7)/5.0
其他id的为null
*/
--查看结果
Select * from T

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
纽约唐人街碎尸案的电影剧情 成年人可以喝金银花益生菌吗 金银花益生菌基本信息 金银花益生菌简要说明 益生瑞氢氧康养机价格 有哪些嗜好是女性怀孕后必须戒掉的?为什么呢? 玻璃为什么有无铅玻璃 pb 什么概念 智能密码锁找哪家更省钱? ...挑选一下那个比较有意思?姓郑。梓昸.梓瞳.炜东.炜桐.炜楠.炜森... 安卓平板电脑后摄像头好模糊不清 平板儿电脑前摄像头800万像素,但照相为啥模糊不清。 苹果2平板拍照不清晰怎么回事 读书郎平板C15后置摄像头照相不是很清楚 新买的苹果迷你五平板摄像头怎么拍照不清晰呀? 请问如何用python将某个邮箱未读邮件全部转发到另一个邮箱? 在客厅装鸿乐杰家装灯饰光源的吸顶灯,灯罩会容易困虫子吗?好清洁吗? 派易通平板拍照模糊不清 吸顶灯为什么会进虫子 python发送邮件,网页接收正常,Foxmail附件乱码 我家开 了一会的吸顶灯 招来了近万只昆虫 这昆虫跟蚂蚁很相似 但居然有翅膀 该怎么办 梦幻模拟战4最佳转职路线 如何用爬虫爬取邮件附件python 蚊子是如何进入灯具的 python 发送邮件,附件中文命名,怎么破 新房 新装修得 入住不到两个月 墙壁上发现有小虫子 求专家:python发送html邮件,同时带附件 新装修后家里出现了小拇指指甲大小 会飞的虫子在吸顶灯附近爬 怎么办 用Python发邮件的时候,附件文件名如果是中文,接受到的总是乱码,如何解... python 发送带附件的邮件,收到的附件名都变成了tcmime.1774.1903.20... 杭州江干区税务局下午几点上班 爱剪辑能做延时摄影吗,爱剪辑延时摄影 我用爱剪辑导入的视频为什么都不在中间,而在左上角,其他地方都是黑色的 爱剪辑视频导出单帧图片 小哥哥是要追我吗表情包 有16到18岁的帅小哥哥吗,没有别的意思,请不要误会 女生说小哥哥起床做运动吃早餐了该怎么回答? 我跟男生说我去找其他小哥哥了 他说赶紧去,巴不得你去呢,还有几个再见的表情 是什么意思 qq 对话删除了怎么找回 QQ关联的那个消息框一不小心被我删掉了怎么才能弄回来? 怎么恢复手机qq删除的消息? 苹果手机插在电脑上没有反应 没有驱动 别的手机都可以 数据线可以充电 在电脑上不行 200分求大神解决:QQ聊天,聊完之后习惯性删除聊天记录,把重要的内容都删了,请问有没有办法找回来。 paypal提现到国内银行不成功,多久退回 滑板车识字真的可以快速识字吗? 怎么帮助孩子克服识字慢识字难的问题? 儿子不识字怎么办 看图识字,连笔字,看不懂,大神帮忙! 滑板车识字简单吗? 认字的方法还有哪些