34,587
社区成员
发帖
与我相关
我的任务
分享
select
分析目标.客户名称,
---------------------------------全年情况---------------------------------
---------------------------------------------------------------------------
分析目标.[2010年任务] as [2010年任务],
回款2010数据.金额 as [2010年已完成],
(ISNULL(回款2010数据.金额,1)/分析目标.[2010年任务]) as [2010年完成率],
回款2009NZZ数据.金额 as [2009年8月全年完成],
((ISNULL(回款2010NZZ数据.金额,0)-ISNULL(回款2009NZZ数据.金额,1))/回款2009NZZ数据.金额) as [2010年增长率],
---------------------------------当前季度情况------------------------------
---------------------------------------------------------------------------
(分析目标.[2010年任务]*0.22) as [Q3任务],
回款2010Q3数据.金额 as [Q3已完成],
(ISNULL(回款2010Q3数据.金额,1)/(分析目标.[2010年任务]*0.22)) as [Q3完成率],
(ISNULL(回款2010Q3数据.金额,0)-(分析目标.[2010年任务]*0.22)) AS [Q3差额],
---------------------------------本月情况---------------------------------
---------------------------------------------------------------------------
(分析目标.[2010年任务]*0.073) as [8月任务(比重7.3%)],
回款2009Y8数据.金额 as [2009年8月完成],
回款2010Y8数据.金额 as [2010年8月已完成],
(ISNULL(回款2010Y8数据.金额,1)/(分析目标.[2010年任务]*0.073)) AS [8月完成率],
(ISNULL(回款2010Y8数据.金额,0)-(分析目标.[2010年任务]*0.084)) AS [8月差额],
---------------------------------上月情况---------------------------------
---------------------------------------------------------------------------
(分析目标.[2010年任务]*0.084) as [7月任务(比重8.4%)],
回款2009Y7数据.金额 as [2009年7月完成],
回款2010Y7数据.金额 as [2010年7月已完成],
(ISNULL(回款2010Y7数据.金额,1)/(分析目标.[2010年任务]*0.084)) AS [7月完成率],
((ISNULL(回款2010Y7数据.金额,0)-ISNULL(回款2009Y7数据.金额,1))/ISNULL(回款2009Y7数据.金额,1)) as [同期增长],
(ISNULL(回款2010Y7数据.金额,0)-(分析目标.[2010年任务]*0.084)) AS [7月差额]
---------------------------------实现过程---------------------------------
---------------------------------------------------------------------------
from 分析目标
--2010年回款计算
LEFT OUTER JOIN
(SELECT 回款数据.客户名称, SUM(回款数据.金额) AS 金额 FROM 回款数据
WHERE (回款数据.订货日期 > '2010-1-2') AND (回款数据.订货日期 <= '2010-12-31') GROUP BY 回款数据.客户名称) as 回款2010数据
ON 分析目标.客户名称=回款2010数据.客户名称
--2009回款计算(2009)--用于计算截止日期的增长率
LEFT OUTER JOIN
(SELECT 回款数据.客户名称, SUM(回款数据.金额) AS 金额 FROM 回款数据
WHERE (回款数据.订货日期 > '2009-1-2') AND (回款数据.订货日期 <= '2009-08-16') GROUP BY 回款数据.客户名称) as 回款2009NZZ数据
ON 分析目标.客户名称=回款2009NZZ数据.客户名称
--2010回款计算(2010)--用于计算截止日期的增长率
LEFT OUTER JOIN
(SELECT 回款数据.客户名称, SUM(回款数据.金额) AS 金额 FROM 回款数据
WHERE (回款数据.订货日期 > '2010-1-2') AND (回款数据.订货日期 <= '2010-08-16') GROUP BY 回款数据.客户名称) as 回款2010NZZ数据
ON 分析目标.客户名称=回款2010NZZ数据.客户名称
--季度回款计算(Q3)
LEFT OUTER JOIN
(SELECT 回款数据.客户名称, SUM(回款数据.金额) AS 金额 FROM 回款数据
WHERE (回款数据.订货日期 > '2010-7-1') AND (回款数据.订货日期 <= '2010-09-30') GROUP BY 回款数据.客户名称) as 回款2010Q3数据
ON 分析目标.客户名称=回款2010Q3数据.客户名称
--8月回款计算(2009)
LEFT OUTER JOIN
(SELECT 回款数据.客户名称, SUM(回款数据.金额) AS 金额 FROM 回款数据
WHERE (回款数据.订货日期 > '2009-8-1') AND (回款数据.订货日期 <= '2009-08-16') GROUP BY 回款数据.客户名称) as 回款2009Y8数据
ON 分析目标.客户名称=回款2009Y8数据.客户名称
--8月回款计算(2010)
LEFT OUTER JOIN
(SELECT 回款数据.客户名称, SUM(回款数据.金额) AS 金额 FROM 回款数据
WHERE (回款数据.订货日期 > '2010-8-1') AND (回款数据.订货日期 <= '2010-08-16') GROUP BY 回款数据.客户名称) as 回款2010Y8数据
ON 分析目标.客户名称=回款2010Y8数据.客户名称
--7月回款计算(2009)
LEFT OUTER JOIN
(SELECT 回款数据.客户名称, SUM(回款数据.金额) AS 金额 FROM 回款数据
WHERE (回款数据.订货日期 > '2009-7-1') AND (回款数据.订货日期 <= '2009-7-31') GROUP BY 回款数据.客户名称) as 回款2009Y7数据
ON 分析目标.客户名称=回款2009Y7数据.客户名称
--7月回款计算(2010)
LEFT OUTER JOIN
(SELECT 回款数据.客户名称, SUM(回款数据.金额) AS 金额 FROM 回款数据
WHERE (回款数据.订货日期 > '2010-7-1') AND (回款数据.订货日期 <= '2010-7-31') GROUP BY 回款数据.客户名称) as 回款2010Y7数据
ON 分析目标.客户名称=回款2010Y7数据.客户名称
create proc p_query1
@curdate datetime
as
declare @sql nvarchar(max)
declare @year int,@month int,@day int
select @year=year(@curdate),@month=month(@curdate),@day=day(@curdate) --取年月日
set @sql='select
分析目标.客户名称,
/*---------------------------------全年情况---------------------------------*/
分析目标.[2010年任务] as ['+str(@year,4)+'年任务],
回款2010数据.金额 as ['+str(@year,4)+'年已完成],
(ISNULL(回款2010数据.金额,1)/分析目标.[2010年任务]) as ['+str(@year,4)+'年完成率],
回款2009NZZ数据.金额 as ['+str(@year-1,4)+'年'+ltrim(str(@month))+'月全年完成],
((ISNULL(回款2010NZZ数据.金额,0)-ISNULL(回款2009NZZ数据.金额,1))/回款2009NZZ数据.金额) as ['+str(@year-1,4)+'年增长率],
/*---------------------------------当前季度情况------------------------------*/
(分析目标.[2010年任务]*0.22) as [Q3任务],
回款2010Q3数据.金额 as [Q3已完成],
(ISNULL(回款2010Q3数据.金额,1)/(分析目标.[2010年任务]*0.22)) as [Q3完成率],
(ISNULL(回款2010Q3数据.金额,0)-(分析目标.[2010年任务]*0.22)) AS [Q3差额],
/*---------------------------------本月情况---------------------------------*/
(分析目标.[2010年任务]*0.073) as ['+ltrim(str(@month))+'月任务(比重7.3%)],
回款2009Y8数据.金额 as ['+str(@year-1,4)+'年'+ltrim(str(@month))+'月完成],
回款2010Y8数据.金额 as ['+str(@year,4)+'年'+ltrim(str(@month))+'月已完成],
(ISNULL(回款2010Y8数据.金额,1)/(分析目标.[2010年任务]*0.073)) AS ['+ltrim(str(@month))+'月完成率],
(ISNULL(回款2010Y8数据.金额,0)-(分析目标.[2010年任务]*0.084)) AS ['+ltrim(str(@month))+'月差额],
/*---------------------------------上月情况---------------------------------*/
(分析目标.[2010年任务]*0.084) as ['+ltrim(str(@month-1))+'月任务(比重8.4%)],
回款2009Y7数据.金额 as ['+str(@year-1,4)+'年'+ltrim(str(@month-1))+'月完成],
回款2010Y7数据.金额 as ['+str(@year,4)+'年'+ltrim(str(@month-1))+'月已完成],
(ISNULL(回款2010Y7数据.金额,1)/(分析目标.[2010年任务]*0.084)) AS ['+ltrim(str(@month-1))+'月完成率],
((ISNULL(回款2010Y7数据.金额,0)-ISNULL(回款2009Y7数据.金额,1))/ISNULL(回款2009Y7数据.金额,1)) as [同期增长],
(ISNULL(回款2010Y7数据.金额,0)-(分析目标.[2010年任务]*0.084)) AS ['+ltrim(str(@month-1))+'月差额]
/*---------------------------------实现过程---------------------------------*/
from 分析目标
/*--2010年回款计算*/
LEFT OUTER JOIN
(SELECT 回款数据.客户名称, SUM(回款数据.金额) AS 金额 FROM 回款数据
WHERE (回款数据.订货日期 > '''+str(@year,4)+'-1-2'') AND (回款数据.订货日期 <= '''+str(@year,4)+'-12-31'') GROUP BY 回款数据.客户名称) as 回款2010数据
ON 分析目标.客户名称=回款2010数据.客户名称
/*--2009回款计算(2009)--用于计算截止日期的增长率*/
LEFT OUTER JOIN
(SELECT 回款数据.客户名称, SUM(回款数据.金额) AS 金额 FROM 回款数据
WHERE (回款数据.订货日期 > '''+str(@year-1,4)+'-1-2'') AND (回款数据.订货日期 <= '''+str(@year-1,4)+'-08-16'') GROUP BY 回款数据.客户名称) as 回款2009NZZ数据
ON 分析目标.客户名称=回款2009NZZ数据.客户名称
/*--2010回款计算(2010)--用于计算截止日期的增长率*/
LEFT OUTER JOIN
(SELECT 回款数据.客户名称, SUM(回款数据.金额) AS 金额 FROM 回款数据
WHERE (回款数据.订货日期 > '''+str(@year,4)+'-1-2'') AND (回款数据.订货日期 <= '''+convert(nvarchar(10),@curdate,120)+''') GROUP BY 回款数据.客户名称) as 回款2010NZZ数据
ON 分析目标.客户名称=回款2010NZZ数据.客户名称
/*--季度回款计算(Q3)*/
LEFT OUTER JOIN
(SELECT 回款数据.客户名称, SUM(回款数据.金额) AS 金额 FROM 回款数据
WHERE (回款数据.订货日期 > '''+str(@year,4)+'-'+case when @month in (1,2,3) then '1'
when @month in (4,5,6) then '2' when @month in (7,8,9) then '7' else '10' end+'-1'') AND (回款数据.订货日期 <= '''+
str(@year,4)+'-'+case when @month in (1,2,3) then '3-31'
when @month in (4,5,6) then '6-30' when @month in (7,8,9) then '9-30' else '12-31' end+''') GROUP BY 回款数据.客户名称) as 回款2010Q3数据
ON 分析目标.客户名称=回款2010Q3数据.客户名称
/*--8月回款计算(2009)*/
LEFT OUTER JOIN
(SELECT 回款数据.客户名称, SUM(回款数据.金额) AS 金额 FROM 回款数据
WHERE (回款数据.订货日期 > '''+@str(@year-1,4)+'-'+ltrim(str(@month))+'-1'') AND (回款数据.订货日期 <= '''+
str(@year-1,4)+'-'+ltrim(str(@month))+'-'+ltrim(str(@day))+''') GROUP BY 回款数据.客户名称) as 回款2009Y8数据
ON 分析目标.客户名称=回款2009Y8数据.客户名称
/*--8月回款计算(2010)*/
LEFT OUTER JOIN
(SELECT 回款数据.客户名称, SUM(回款数据.金额) AS 金额 FROM 回款数据
WHERE (回款数据.订货日期 > '''+@str(@year,4)+'-'+ltrim(str(@month))+'-1'') AND (回款数据.订货日期 <= '''+
str(@year,4)+'-'+ltrim(str(@month))+'-'+ltrim(str(@day))+''') GROUP BY 回款数据.客户名称) as 回款2010Y8数据
ON 分析目标.客户名称=回款2010Y8数据.客户名称
/*--7月回款计算(2009)*/
LEFT OUTER JOIN
(SELECT 回款数据.客户名称, SUM(回款数据.金额) AS 金额 FROM 回款数据
WHERE (回款数据.订货日期 > '''+@str(@year-1,4)+'-'+ltrim(str(@month-1))+'-1'') AND (回款数据.订货日期 <= '''+
convert(nvarchar(10),dateadd(dd,-1,convert(datetime,str(@year-1,4)+'-'+ltrim(str(@month))+'-1',120)),120)+''') GROUP BY 回款数据.客户名称) as 回款2009Y7数据
ON 分析目标.客户名称=回款2009Y7数据.客户名称
/*--7月回款计算(2010)*/
LEFT OUTER JOIN
(SELECT 回款数据.客户名称, SUM(回款数据.金额) AS 金额 FROM 回款数据
WHERE (回款数据.订货日期 > '''+@str(@year-1,4)+'-'+ltrim(str(@month-1))+'-1'') AND (回款数据.订货日期 <= '''+
convert(nvarchar(10),dateadd(dd,-1,convert(datetime,str(@year-1,4)+'-'+ltrim(str(@month))+'-1',120)),120)+''') GROUP BY 回款数据.客户名称) as 回款2010Y7数据
ON 分析目标.客户名称=回款2010Y7数据.客户名称
'
exec(@sql) --如果执行不成功,屏蔽此语句,print @sql 查看动态生成语句是否正确