34,873
社区成员
发帖
与我相关
我的任务
分享Declare @date datetime
set @date='2010-06-10'
select a.name,a.fid ,isnull(m1,0) as m1,isnull(m2,0) as m2,isnull(m3,0) as m3,isnull(b.日累计,0) as '日累计',isnull(d.月累计,0) as '月累计',isnull(c.quantity ,0)as '本月合同量',isnull(cast(cast(d.月累计 as decimal(18,2))/cast(c.quantity as decimal(18,2)) as decimal(18,2)),0) as '完成率',
isnull(e.上月累计,0) as 上月累计,isnull(f.年累计,0) as '年累计'
from
(select * from customer) a
left join (
select customer,isnull(m1,0) as m1,isnull(m2,0) as m2,isnull(m3,0) as m3,isnull(m1,0)+isnull(m2,0)+isnull(m3,0) as '日累计' from
(select b.customer, mtr,number from sell b where mtime=@date ) a pivot
( sum(number) for mtr in ([m1],[m2],[m3])) as pvt
) b on a.fid=b.customer
left join
(select customer,sum(number) as '月累计' from sell where left(convert(nvarchar(10),mtime,102),7)=left(convert(nvarchar(10),@date,102),7) group by customer )d on a.fid=d.customer
left join
(select customer,sum(quantity) as quantity from Contrac where left(convert(nvarchar(10),stime,102),7)=left(convert(nvarchar(10),@date,102),7) group by customer)c on a.fid=c.customer
left join
(select customer,sum(number) as '上月累计' from sell where left(convert(nvarchar(10),mtime,102),7)=left(convert(nvarchar(10),dateadd(month,-1,@date),102),7) group by customer )e on a.fid=e.customer
left join
(select customer,sum(number) as '年累计' from sell where left(convert(nvarchar(10),mtime,102),4)=left(convert(nvarchar(10),@date,102),4) group by customer )f on a.fid=f.customer
name fid m1 m2 m3 日累计 月累计 本月合同量 完成率 上月累计 年累计
-------------------- -------------------- --------------------------------------- --------------------------------------- --------------------------------------- --------------------------------------- --------------------------------------- ----------- --------------------------------------- --------------------------------------- ---------------------------------------
客户1 c1 1.00 4.00 0.00 5.00 5.00 10 0.50 0.00 6.00
客户2 c2 3.00 10.00 16.00 29.00 37.00 20 1.85 10.00 54.00
客户3 c3 0.00 6.00 0.00 6.00 6.00 30 0.20 6.00 12.00
客户4 c4 0.00 0.00 0.00 0.00 40.00 0 0.00 0.00 40.00
客户5 c5 0.00 0.00 0.00 0.00 0.00 0 0.00 0.00 0.00
(5 行受影响)
Declare @date datetime
set @date='2010-06-10'
select a.name,a.fid ,isnull(m1,0) as m1,isnull(m2,0) as m2,isnull(m3,0) as m3,isnull(b.日累计,0),isnull(d.月累计,0),isnull(c.quantity ,0)as '本月合同量',isnull(cast(cast(d.月累计 as decimal(18,2))/cast(c.quantity as decimal(18,2)) as decimal(18,2)),0) as '完成率',
isnull(e.上月累计,0) as 上月累计,isnull(f.年累计,0)
from
(select * from customer) a
left join (
select customer,isnull(m1,0) as m1,isnull(m2,0) as m2,isnull(m3,0) as m3,isnull(m1,0)+isnull(m2,0)+isnull(m3,0) as '日累计' from
(select b.customer, mtr,number from sell b where mtime=@date ) a pivot
( sum(number) for mtr in ([m1],[m2],[m3])) as pvt
) b on a.fid=b.customer
left join
(select customer,sum(number) as '月累计' from sell where left(convert(nvarchar(10),mtime,102),7)=left(convert(nvarchar(10),@date,102),7) group by customer )d on a.fid=d.customer
left join
(select customer,sum(quantity) as quantity from Contrac where left(convert(nvarchar(10),stime,102),7)=left(convert(nvarchar(10),@date,102),7) group by customer)c on a.fid=c.customer
left join
(select customer,sum(number) as '上月累计' from sell where left(convert(nvarchar(10),mtime,102),7)=left(convert(nvarchar(10),dateadd(month,-1,@date),102),7) group by customer )e on a.fid=e.customer
left join
(select customer,sum(number) as '年累计' from sell where left(convert(nvarchar(10),mtime,102),4)=left(convert(nvarchar(10),@date,102),4) group by customer )f on a.fid=f.customer
name fid m1 m2 m3 本月合同量 完成率 上月累计
-------------------- -------------------- --------------------------------------- --------------------------------------- --------------------------------------- --------------------------------------- --------------------------------------- ----------- --------------------------------------- --------------------------------------- ---------------------------------------
客户1 c1 1.00 4.00 0.00 5.00 5.00 10 0.50 0.00 6.00
客户2 c2 3.00 10.00 16.00 29.00 37.00 20 1.85 10.00 54.00
客户3 c3 0.00 6.00 0.00 6.00 6.00 30 0.20 6.00 12.00
客户4 c4 0.00 0.00 0.00 0.00 40.00 0 0.00 0.00 40.00
客户5 c5 0.00 0.00 0.00 0.00 0.00 0 0.00 0.00 0.00
(5 行受影响)Declare @date datetime
set @date='2010-06-10'
select a.name,b.customer ,isnull(m1,0) as m1,isnull(m2,0) as m2,isnull(m3,0) as m3,isnull(b.日累计,0),isnull(d.月累计,0),isnull(c.quantity ,0)as '本月合同量',isnull(cast(cast(d.月累计 as decimal(18,2))/cast(c.quantity as decimal(18,2)) as decimal(18,2)),0) as '完成率',
isnull(e.上月累计,0) as 上月累计,isnull(f.年累计,0)
from
(select * from customer) a
left join (
select customer,isnull(m1,0) as m1,isnull(m2,0) as m2,isnull(m3,0) as m3,isnull(m1,0)+isnull(m2,0)+isnull(m3,0) as '日累计' from
(select b.customer, mtr,number from sell b where mtime=@date ) a pivot
( sum(number) for mtr in ([m1],[m2],[m3])) as pvt
) b on a.fid=b.customer
left join
(select customer,sum(number) as '月累计' from sell where left(convert(nvarchar(10),mtime,102),7)=left(convert(nvarchar(10),@date,102),7) group by customer )d on a.fid=d.customer
left join
(select customer,sum(quantity) as quantity from Contrac where left(convert(nvarchar(10),stime,102),7)=left(convert(nvarchar(10),@date,102),7) group by customer)c on a.fid=c.customer
left join
(select customer,sum(number) as '上月累计' from sell where left(convert(nvarchar(10),mtime,102),7)=left(convert(nvarchar(10),dateadd(month,-1,@date),102),7) group by customer )e on a.fid=e.customer
left join
(select customer,sum(number) as '年累计' from sell where left(convert(nvarchar(10),mtime,102),4)=left(convert(nvarchar(10),@date,102),4) group by customer )f on a.fid=f.customerDeclare @date datetime
set @date='2010-06-10'
select a.name,b.customer ,isnull(m1,0) as m1,isnull(m2,0) as m2,isnull(m3,0) as m3,isnull(b.日累计,0),isnull(d.月累计,0),isnull(c.quantity ,0)as '本月合同量',isnull(cast(cast(d.月累计 as decimal(18,2))/cast(c.quantity as decimal(18,2)) as decimal(18,2)),0) as '完成率',
isnull(e.上月累计,0) as 上月累计,isnull(f.年累计,0)
from
(select * from customer) a
left join (
select customer,isnull(m1,0) as m1,isnull(m2,0) as m2,isnull(m3,0) as m3,isnull(m1,0)+isnull(m2,0)+isnull(m3,0) as '日累计' from
(select b.customer, mtr,number from sell b where mtime=@date ) a pivot
( sum(number) for mtr in ([m1],[m2],[m3])) as pvt
) b on a.fid=b.customer
left join
(select customer,sum(number) as '月累计' from sell where left(convert(nvarchar(10),mtime,102),7)=left(convert(nvarchar(10),@date,102),7) group by customer )d on a.fid=d.customer
left join
(select customer,sum(quantity) as quantity from Contrac where left(convert(nvarchar(10),stime,102),7)=left(convert(nvarchar(10),@date,102),7) group by customer)c on a.fid=c.customer
left join
(select customer,sum(number) as '上月累计' from sell where left(convert(nvarchar(10),mtime,102),7)=left(convert(nvarchar(10),dateadd(month,-1,@date),102),7) group by customer )e on a.fid=e.customer
left join
(select customer,sum(number) as '年累计' from sell where left(convert(nvarchar(10),mtime,102),4)=left(convert(nvarchar(10),@date,102),4) group by customer )f on a.fid=f.customerselect a.name,
sum(case when b.mtr='m1' then number else 0 end) as M1,
sum(case when b.mtr='m2' then number else 0 end) as M2,
sum(case when b.mtr='m3' then number else 0 end) as M3,
sum(case when b.mtr in ('m1','m2','m3') then number else 0 end) as 日累计,
d.月累计,
c.quantity 本月合同量,
d.月累计*1.0/c.quantity 完成率,
e.上月累计,
f.年累计
from [customer] a left join [sell] b on a.fid=b.customer
left join [Contrac] c on a.fid=c.customer and datediff(month,c.stime,b.mtime)=0
left join (select customer,convert(varchar(7),mtime,120)+'-01' mtime,
sum(case when mtr in ('m1','m2','m3') then number else 0 end) 月累计
from [sell] group by customer,convert(varchar(7),mtime,120)) d
on a.fid=d.customer and datediff(month,d.mtime,b.mtime)=0
left join (select customer,convert(varchar(7),mtime,120)+'-01' mtime,
sum(case when mtr in ('m1','m2','m3') then number else 0 end) 上月累计
from [sell] group by customer,convert(varchar(7),mtime,120)) e
on a.fid=e.customer and datediff(month,e.mtime,b.mtime)=1
left join (select customer,convert(varchar(4),mtime,120)+'-01-01' mtime,
sum(case when mtr in ('m1','m2','m3') then number else 0 end) 年累计
from [sell] group by customer,convert(varchar(4),mtime,120)) f
on a.fid=f.customer and datediff(year,f.mtime,b.mtime)=0
where convert(varchar(10),b.mtime,120)='2010-06-10'
group by
a.name,
convert(varchar(10),b.mtime,120),
d.月累计,
c.quantity ,
e.上月累计,
f.年累计
--结果
/*
name M1 M2 M3 日累计 月累计 本月合同量 完成率 上月累计 年累计
-------------------- --------------------------------------- --------------------------------------- --------------------------------------- --------------------------------------- --------------------------------------- ----------- --------------------------------------- --------------------------------------- ---------------------------------------
客户1 1.00 4.00 0.00 5.00 5.00 10 0.500000 NULL 6.00
客户2 3.00 10.00 16.00 29.00 37.00 20 1.850000 10.00 54.00
客户3 0.00 6.00 0.00 6.00 6.00 30 0.200000 6.00 12.00
(3 行受影响)
*/