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

各位大侠,一条SQL语句的问题!帮帮忙

发布网友 发布时间:2022-04-09 15:11

我来回答

5个回答

懂视网 时间:2022-04-09 19:32

如下语句如果不加go的话,当做一个批处理编译时会报错,提示没有split_count和split_amount列。加了go时可以一起执行

--3.Kit split in sale_detail: split_count,split_amount

ALTER TABLE sale_detail ADD split_count INT,split_amount float

go

--EXECUTE TIME 40 minute

UPDATE ssd SET ssd.split_count=tt.split_count,ssd.split_amount=tt.split_amount

FROM dbo.sale_detail ssd

JOIN (

SELECT a.rid,SUM(ISNULL(a.split_units,0)) AS split_count,SUM(ISNULL(a.split_rmb,0)) AS split_amount

FROM (

SELECT sd.rid, SUM(( CASE WHEN pk.count IS NULL THEN 1 ELSE pk.count END ) * sd.count) AS split_units,

SUM(CASE WHEN pk.price IS NULL THEN sd.amount ELSE pk.price * pk.count * sd.count END ) AS split_rmb

FROM sale_detail sd WITH(NOLOCK)

LEFT JOIN product p WITH(NOLOCK) ON p.product_id = sd.product_id

LEFT JOIN product_kit pk WITH(NOLOCK) ON pk.kit_id = p.product_id

AND pk.status = 0

AND sd.sale_date >= pk.start_date

AND sd.sale_date <= pk.end_date

WHERE sd.status = 0

AND p.status <> 1

AND p.ispromotion = 0

GROUP BY sd.rid

) a

GROUP BY a.rid

) tt ON ssd.rid = tt.rid

SQL语句是以一个patch为单位编译

标签:with   from   time   date   ice   处理   group by   cas   set   

热心网友 时间:2022-04-09 16:40

--我给的这个答案是在ID可能不连续的情况下,让相邻的两个ID上的值大号减小号。 caidchelp写的语句在ID是连续的,并且ID递增为一的情况下也是正确的。
select A.*,本期累计=A.本期累计-B.本期累计
from t_zbxx A,T_ZBXX B
WHERE B.ID=
ISNULL((SELECT MAX(D.ID) FROM t_zbxx C WHERE C.ID<A.ID),0)--这个子查询是提出比A表中提出的ID小的ID中最大的一个ID号作为B表的ID号(这是相邻记录的提取方法)。

==========
对于LZ后面的补充,我没搞清是什么意思。有两种理解,一种是将类型相同的记录提出来后,将相邻记录大号减小号。
第二种理解就是类型为1的记录减类型为0的记录。
时间关系统,第二种情况就先不说了,如果是第一种情况,这样就行了:
select A.*,本期累计=A.本期累计-B.本期累计
from t_zbxx A,T_ZBXX B
WHERE B.ID=
ISNULL((SELECT MAX(D.ID) FROM t_zbxx C WHERE C.ID<A.ID and C.TYPE=A.TYPE),0)
--查询原理:1.提取一条A为别名的表中的一条记录(无条件),2.提取一条件B别名的表中的一条件记录,提取条件比A中提出的记录的ID小的、与A中提出的记录的类型相同的所有记录中最大的一条记录(这么绕口,其实就是同TYPE,相邻的记录),3将提出的两条件记录的累积数相减(A的记录-B的记录),作为结果。4继续从A中提取下一条记录,然后再从第2步开始到此,周而复始,直到A中的记录提取完成。所有记录的查询结果就出来了。

加上一个ISNULL()函数判断是为了当A为最小值ID时,相邻记录没有更小的ID时,就不减了(减0)

热心网友 时间:2022-04-09 17:58

--首先建一张t_zbxx_sum表,字段为本期累计和保存时间,用于存放结果
declare @lowid int
declare @highid int
declare @Maxid int
declare @SumNum int
declare @datetime varchar(100)

select @Maxid = max(id) from t_zbxx
set @lowid = 1
set @highid = 2
while @highid <= @Maxid
begin
set @SumNum = (select 本期累计 from t_zbxx where id = @highid)-(select 本期累计 from t_zbxx where id = @lowid)
set @datetime = select 保存时间 from t_zbxx where id = @highid
insert into t_zbxx_sum values(@SumNum,@datetime)
set @lowid = @lowid + 1
set @highid = @highid + 1
end

热心网友 时间:2022-04-09 19:33

select a.保存时间,a.本期累计-max(b.本期累计)
from t_zbxx a left join t_zbxx b on a.保存时间>b.保存时间
group by a.保存时间,a.本期累计

热心网友 时间:2022-04-09 21:24

123456
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么时间试排卵纸最佳 排卵第十天排卵试纸弱阳怎么回事 手机app下载课后帮 课后帮点击了家长怎么改成学生的 课后帮绑定学生后还能绑定家长吗 课后帮怎么注册 课后帮注册教程 癫痫急救的正确方法 癫痫持续状态的抢救要点 小儿癫痫发作的急救措施 癫痫病急救常识有哪些要点 怎么样都开心不起来..要疯.怎么办? 一个人一天到晚开心不起来,该怎么办。 人为什么总是觉得很烦 总是开心不起来呢 一个人如果怎么都开心不起来,是怎么回事 总是开心不起来,是怎么回事 人开心不起来怎么办? 就是开心不起来怎么办 怎么都开心不起来怎么办 人总是开心不起来怎么办? 一个人怎么就是开心不起来为什么? 护士资格证怎么学 1.讲述您对护士资格证、专科护士资格证的认识以及如何注册? 护士资格证讲解 5月份就要考*资格证了 而我还不慌不忙 直到这一刻我才深刻得体会到 紧迫感 我 如何取消 WIN10键盘中英文快捷键切换 ?取消Shift和CTRL的快捷键切换? 护士资格证讲座感想 *资格证究竟考些什么哪里有心得体会和经验 加急2012年急用 学习了护士在执业中义务,你有哪些收获和感受? 如何更改WIN10的输入法快捷键。像WIN7一样,按CTRL+SPACE就是呼出搜狗输入法,再按一下就是英文输入? 护士资格证考试经验总结 高压锅炖鸡需要压2次吗 企业qq对企业有哪些作用? 高压锅炖笨鸡的做法 螺丝爱情含义 高压锅炖甜鸡放料酒吗 企业QQ有什么用处 螺丝的基本含义 腾讯企业QQ的功能有多强大 螺丝人生的寓意是什么 为什么要开通企业qq?有没有必要开通企业qq? 螺丝钉代表什么爱情含义 腾讯企业aip和个人微信功能作用有什么区别? 日元15400多少人民币 螺丝上面的那些字是表示什么意思? 15400日元等于多少人民币 日本15400等于中国多少钱 在日本买个15000日元在国内值多少人民币? 10400日元等于多少人民币 15400日元折合多少人民币 1円日元等于多少元人民币