美女帅哥看过来!分数人人有,永不落空!

tripman 2003-05-09 09:04:35
求SQL语句!
我有一材料明细帐表cl_mxz,如下:
流水号 材料编码 年 月 日 ... 单价 余额数量
lsh clbm nf yf rr ... dj yesl
-------------------------------------------
1 01***** 2003 5 1 ... 9 10
2 03***** 2003 5 1 ... 9 5
3 02***** 2003 5 3 ... 16 2
4 01***** 2003 5 4 ... 8
。。。
。。。
每一材料编码代表一材料,其中前两位为材料的大类编码,代表从01-35大类.年、月、日为整型。
每条记录代表每一个材料的一次进或出帐发生,余额数量为该材料发生进或出帐后的库存数量(某月的最大日期数(rr)的余额数量即为该材料该月的余额数量 )。
我想通过SQL语句按01-35大类算出各个大类在某月如2003年5月的余额数量的合计金额(单价*余额数量 ),此语句怎么写?
即应算出:
类别 合计金额
-----------------
01 ?
02 ?
03 ?
。。。
。。。
能解决问题分数我有得是,如果还有其他要求你尽管开口!
...全文
64 点赞 收藏 16
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
triout 2003-05-12
如果指定年月:
select 类别,yesl*dj as 合计金额 from
(select top 1 left(clbm,2) as 类别,dj,yesl from cl_mxz
where nf=2003 and yf=5
order by rr desc)

如果要返回所有年月:
select 类别,yesl*dj as 合计金额 from
(select left(clbm,2) as 类别,dj,yesl from cl_mxz
where lsh in
(select top 1 lsh from cl_mxz group by left(clbm,2),nf,yf order by rr desc)
order by rr desc)

回复
happydreamer 2003-05-10
SELECT SUBSTRING(clbm,1,2) AS 类别,sum(dj * yesl) AS 合计金额
FROM cl_mxz
WHERE nf=2003 AND yf=5
and rr=(select max(rr) from cl_mxz a where a.SUBSTRING(clbm,1,2)=cl_mxz.SUBSTRING(clbm,1,2)
)
GROUP BY SUBSTRING(clbm,1,2)
回复
pengdali 2003-05-10
--测试:
declare @cl_mxz table (lsh int,clbm varchar(10), nf int,yf int,rr int,dj int,yesl int)
insert @cl_mxz values(1, '01*****' , 2003 ,5, 1 , 9 , 10)
insert @cl_mxz values(2 , '03*****' ,2003 ,5 , 1 , 9 , 5)
insert @cl_mxz values(3 , '02*****' , 2003 , 5 , 3 , 16 , 2)
insert @cl_mxz values(4 , '01*****' ,2003, 5 ,4, 8, 19)



select 类别,sum(合计金额) 合计金额 from(
select left(clbm,2) 类别,

dj*(select top 1 yesl from @cl_mxz where nf=aa.nf and yf=aa.yf and clbm=aa.clbm order by rr desc) 合计金额

from @cl_mxz aa where nf=2003 and yf=5 ) tem group by 类别
回复
pengdali 2003-05-10
select 类别,sum(合计金额) 合计金额 from(select left(clbm,2) 类别,dj*(select top 1 yesl from cl_mxz where nf=aa.nf and yf=aa.yf and clbm=aa.clbm order by rr desc) 合计金额 from cl_mxz aa where nf=2003 and yf=5 ) tem group by 类别
回复
pengdali 2003-05-10
select left(clbm,2) 类别,sum(dj*yesl) 合计金额 from cl_mxz where nf=2003 and yf=5 group by left(clbm,2)
回复
zhengshidong 2003-05-10
数据库中建立表的关系应该怎么办呀?
回复
zhengshidong 2003-05-10
我不知道 。
回复
tripman 2003-05-10
衷心感谢大力以及happydreamer(偶很菜)的帮助,
大力的我已试过,可以很快得出结果,由于数据量比较大,结果还没来得急验证,
happydreamer(偶很菜)的方法也可以得出结果,但是间要长一些(大概需要几分锺),选出的类别少了部分,得出的合计金额似乎偏少,有待验证.
回复
happydreamer 2003-05-10

SELECT SUBSTRING(clbm,1,2) AS 类别,sum(dj * yesl) AS 合计金额
FROM cl_mxz
WHERE nf=2003 AND yf=5
and rr=(select max(rr) from cl_mxz a where SUBSTRING(a.clbm,1,2)=SUBSTRING(cl_mxz.clbm,1,2) )
GROUP BY SUBSTRING(clbm,1,2)
回复
shuchang0626 2003-05-09
帮你up一下吧
回复
erigido 2003-05-09
帅哥报到~!!!
回复
Happiness 2003-05-09
SELECT SUBSTRING(clbm,1,2) AS 类别,sum(dj * yesl) AS 合计金额
FROM cl_mxz
WHERE nf=2003 AND yf=5
and rr=(select max(rr) from cl_mxz where nf=2003 AND yf=5)
GROUP BY SUBSTRING(clbm,1,2)

回复
tripman 2003-05-09
up
回复
tripman 2003-05-09
to: LJYWZ(罗敬业)
余额数量为该材料发生进或出帐后的库存数量(某月的最大日期数(rr)的余额数量即为该材料该月的余额数量 )。
sum(dj * yesl) 不对,我要选出该月的最后一次(即最大日期数)帐本发生的余额数量.
回复
cjw1881 2003-05-09
赶到,友情接分。
回复
艳阳天11 2003-05-09
SELECT SUBSTRING(clbm) AS 类别,sum(dj * yesl) AS 合计金额
FROM cl_mxz
WHERE nf=2003 AND yf=5
GROUP BY SUBSTRING(clbm)
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2003-05-09 09:04
社区公告
暂无公告