永发信息网

请教一个SQL分月求平均价的问题

答案:5  悬赏:10  手机版
解决时间 2021-02-05 13:30
create table #t1
(
客户 varchar(30),
产品 varchar(26),
日期 datetime,
单价 float
)

insert into #t1(客户,产品,日期,单价)
select '北京','牙膏','2013-01-20',5.6 union all
select '北京','牙膏','2013-01-25',7.6 union all
select '北京','牙膏','2013-02-10',5.6 union all
select '北京','牙膏','2013-02-22',5.6 union all
select '北京','牙膏','2013-02-27',5.6 union all
select '北京','牙膏','2013-02-28',5.6 union all
select '北京','牙膏','2013-05-11',5.6 union all
select '北京','牙膏','2013-05-20',5.6 union all
select '北京','牙膏','2013-05-31',5.6 union

select * from #t1
drop table #t1

--结果: 北京,牙膏,一月平均价,二月平均价,五月平均价
最佳答案
select 客户,产品,
avg(case month(日期) when 1 then 单价 else null end) as 一月平均价,
avg(case month(日期) when 2 then 单价 else null end) as 二月平均价,
avg(case month(日期) when 5 then 单价 else null end) as 五月平均价
from #t1
group by 客户,产品
全部回答
如果只是这3个月可以直接用下面的语句 SELECt 客户,产品,SUM(CASE WHEN t1.mm=1 THEN t1.price ELSE '' END) 一月平均价, SUM(CASE WHEN t1.mm=2 THEN t1.price ELSE '' END) 二月平均价, SUM(CASE WHEN t1.mm=2 THEN t1.price ELSE '' END) 五月平均价 FROM  ( SELECt 客户,产品,DATEPART(mm,日期) AS mm,AVG(单价) price FROM #t1 GROUP BY  客户,产品,DATEPART(mm,日期) ) t1 GROUP BY  客户,产品
select sum(syw+syy+ssx)/3 from student where sbj =''
那我来个通用的 insert into #t1(客户,产品,日期,单价) select '山东','苹果','2013-01-20',5.0 union all select '山东','苹果','2013-01-10',9.0 union all select '山东','苹果','2013-02-20',5.0 union all select '山东','苹果','2013-02-10',8.0 union all -- select '天门','牙膏','2013-01-12',5.6 union all select '天门','牙膏','2013-01-22',9.0 union all select '天门','牙膏','2013-02-12',6.6 union all select '天门','牙膏','2013-02-22',10.6 declare @sql varchar(8000) begin   set @sql = 'select 客户,产品'   select @sql = @sql + ',SUM(case when 日期1=''' + [日期1] + ''' then 平均价格 end) as '''+ [日期1] + ''''   from (select 客户,产品,日期1,avg(单价) as 平均价格 from (select 客户,产品,SUBSTRINg(convert(varchar(30),日期,120),1,7)as 日期1,单价 from #t1)a group by 客户,产品,日期1)b group by 日期1   set @sql = @sql + ' from (select 客户,产品,日期1,avg(单价) as 平均价格 from (select 客户,产品,SUBSTRINg(convert(varchar(30),日期,120),1,7)as 日期1,单价 from #t1)a group by 客户,产品,日期1)b group by 客户,产品' end exec(@sql)
select 客户,产品, avg(case when month(日期)=1 then 单价) 一月平均价, avg(case when month(日期)=2 then 单价) 二月平均价, avg(case when month(日期)=5 then 单价) 五月平均价 from #t1 group by 客户,产品
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
按照查账的顺序,纳税检查的基本方法分为顺查
血浆d二聚体高会导致血液凝固更快吗
电信宽带4个月没用了,还没到期,不报停,会
朗然通风设备有限公司在什么地方啊,我要过去
Paypal能保障买家的利益吗
一个男生原先我和他很聊的来。在QQ上。 但后
铃绦的意思是什么啊?知道的请说下!
某筏形基础底面尺寸为10m×20m,底面压力为22
魅族4pro为什么打电话对方听不到我的声音,
韩建河山股票是什么板块
永盛花园2号门在什么地方啊,我要过去处理事
如图,∠1可表示________或________,∠β可
关于居住区规划中,小区级路的概念,以下哪项
人造地球卫星的意思是什么啊?知道的请说下!
千足虫能活多久
推荐资讯
u.s army是什么牌子的鞋
义乌博览皇冠假日酒店这个地址在什么地方,我
下关三小地址在什么地方,我要处理点事
请用一个成语,把佳佳他们的共同感受表达出来.
闲鱼怎样绑定支付宝账号?
0.25×39+0.25简便方法
有三个连续的自然数,最小的能被15整除,中间
拨打114118查询电话号码收取电话费吗?拜托各
【regarded】Stocks are regarded as a good
【1牛顿可以拉起多重的物体1牛顿的力可以拉起
红辣椒烤鱼火锅地址在什么地方,想过去办事
底兵的意思是什么啊?知道的请说下!
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?