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
--结果: 北京,牙膏,一月平均价,二月平均价,五月平均价
请教一个SQL分月求平均价的问题
答案:5 悬赏:10 手机版
解决时间 2021-02-05 13:30
- 提问者网友:wodetian
- 2021-02-04 23:16
最佳答案
- 五星知识达人网友:醉吻情书
- 2021-02-05 00:52
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 客户,产品
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 客户,产品
全部回答
- 1楼网友:时间的尘埃
- 2021-02-05 03:07
如果只是这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 客户,产品
- 2楼网友:鸽屿
- 2021-02-05 02:29
select sum(syw+syy+ssx)/3 from student where sbj =''
- 3楼网友:过活
- 2021-02-05 01:22
那我来个通用的
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)
- 4楼网友:空山清雨
- 2021-02-05 01:14
select 客户,产品, avg(case when month(日期)=1 then 单价) 一月平均价,
avg(case when month(日期)=2 then 单价) 二月平均价,
avg(case when month(日期)=5 then 单价) 五月平均价
from #t1
group by 客户,产品
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯