还是刚才这个帖子,
地址http://topic.csdn.net/u/20090216/10/6f6a1894-1f51-432c-b676-816271ee0cec.html?seed=221566552
表 table
表中列
fgysbm(供应商编码),fsj(时间用来进行排序),fcpbm(产品编码),fdj(单价),fsl(数量)
可能的数据
001 2008-05-02 010101 0.12 126
001 2008-05-03 010101 0.11 212
001 2008-05-04 010101 0.10 526 002 .................... 希望得到的结果
最大单价 最小单价 平均单价1 平均单价2 最新单价 最大数量 最小数量 最新数量
001 010101 0.12 0.10 0.11 0.10 0.10 526 126 526
上面的平均单价1的算法是直接用avg来得出的
还有一种平均单价2应该是 sum(fdj*fsl)/sum(fsl)来得出,
我按照下面的写法写好之后,所有记录的最新单价跟最新数量都是一样的select fgysbm,fcpbm,
max(fdj) 最大单价,
min(fdj) 最小单价,
avg(fdj) 平均单价1,
sum(fdj*fsl)/sum(fsl)平均单价2,
(select top 1 fdj from table where fgysbm = m.fgysbm and fcpbm = n.fcpbm order by fsj desc) 最新单价,
max(fsl) 最大数量,
min(fsl) 最小数量,
(select top 1 fsl from table where fgysbm = m.fgysbm and fcpbm = n.fcpbm order by fsj desc) 最新数量
from table m
group by fgysbm,fcpbm
地址http://topic.csdn.net/u/20090216/10/6f6a1894-1f51-432c-b676-816271ee0cec.html?seed=221566552
表 table
表中列
fgysbm(供应商编码),fsj(时间用来进行排序),fcpbm(产品编码),fdj(单价),fsl(数量)
可能的数据
001 2008-05-02 010101 0.12 126
001 2008-05-03 010101 0.11 212
001 2008-05-04 010101 0.10 526 002 .................... 希望得到的结果
最大单价 最小单价 平均单价1 平均单价2 最新单价 最大数量 最小数量 最新数量
001 010101 0.12 0.10 0.11 0.10 0.10 526 126 526
上面的平均单价1的算法是直接用avg来得出的
还有一种平均单价2应该是 sum(fdj*fsl)/sum(fsl)来得出,
我按照下面的写法写好之后,所有记录的最新单价跟最新数量都是一样的select fgysbm,fcpbm,
max(fdj) 最大单价,
min(fdj) 最小单价,
avg(fdj) 平均单价1,
sum(fdj*fsl)/sum(fsl)平均单价2,
(select top 1 fdj from table where fgysbm = m.fgysbm and fcpbm = n.fcpbm order by fsj desc) 最新单价,
max(fsl) 最大数量,
min(fsl) 最小数量,
(select top 1 fsl from table where fgysbm = m.fgysbm and fcpbm = n.fcpbm order by fsj desc) 最新数量
from table m
group by fgysbm,fcpbm
declare @t table(fgysbm varchar(10),fsj datetime,fcpbm varchar(20),fdj numeric(5,2),fsl int)
insert into @t select '001','2008-05-02','010101',0.12,126
insert into @t select '001','2008-05-03','010101',0.11,212
insert into @t select '001','2008-05-04','010101',0.10,526 select fgysbm,fcpbm,
max(fdj) 最大单价,
min(fdj) 最小单价,
avg(fdj) 平均单价1,
sum(fdj*fsl)/sum(fsl)平均单价2,
(select top 1 fdj from @t where fgysbm = n.fgysbm and fcpbm = n.fcpbm order by fsj desc) 最新单价,
max(fsl) 最大数量,
min(fsl) 最小数量,
(select top 1 fsl from @t where fgysbm = n.fgysbm and fcpbm = n.fcpbm order by fsj desc) 最新数量
from @t n
group by fgysbm,fcpbm