有谁会做这个?

lijun2000 2012-08-01 04:50:15
计划表(每个月导一次)
单店 计划日期 计划数
南昌别克 2012-8-1 30
抚州运通 2012-8-1 20

业务表
公司名称 日期 所属品牌 车型 销售部门 销售顾问 贷款渠道 订单号 订单状态
南昌别克 2012/7/25 荣威 荣威550 展厅 黄雨龙 上汽财务 GM201207250023 申请
抚州运通 2012/7/26 别克 荣威 区域 赵婧 GMAC GM201207250024 合同
南昌别克 2012/7/27 别克 东本 区域 王凤权 GMAC GM201207250026 申请
南昌雪佛兰 2012/7/28 雪佛兰 雪佛兰 展厅 李智敏 GMAC GM201207250028 合同

结果:
单店 计划 展厅 区域 实际 达成率
南昌别克 30 3 0 3 9%
抚州运通 20 0 0 0 0%
南昌城西别克 19 0 0 0%
南昌雪佛兰 27 2 0 7%
有谁会做不?
...全文
186 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
lijun2000 2012-08-01
  • 打赏
  • 举报
回复
因为按照你的思路去做,不管是哪个月的,只要年份是2012都统计起来了,我要实现的是跟踪每个月完成计划情况(每月初到每月未,计划数每个月的月初导入)。
lijun2000 2012-08-01
  • 打赏
  • 举报
回复
测试了下,计划数不对?有什么办法可以把月份作为参数传进去,这样去只做每个月计划做跟踪
lijun2000 2012-08-01
  • 打赏
  • 举报
回复
嫂子就是强。。。。去测试下
筱筱澄 2012-08-01
  • 打赏
  • 举报
回复
--> 测试数据:[计划表]
IF OBJECT_ID('[计划表]') IS NOT NULL DROP TABLE [计划表]
GO
CREATE TABLE [计划表]([单店] VARCHAR(8),[计划日期] DATETIME,[计划数] INT)
INSERT [计划表]
SELECT '南昌别克','2012-8-1',30 UNION ALL
SELECT '抚州运通','2012-8-1',20
GO

--> 测试数据:[业务表]
IF OBJECT_ID('[业务表]') IS NOT NULL DROP TABLE [业务表]
GO
CREATE TABLE [业务表]([公司名称] VARCHAR(10),[日期] DATETIME,[所属品牌] VARCHAR(6),[车型] VARCHAR(7),[销售部门] VARCHAR(4),[销售顾问] VARCHAR(6),[贷款渠道] VARCHAR(8),[订单号] VARCHAR(14),[订单状态] VARCHAR(4))
INSERT [业务表]
SELECT '南昌别克','2012/7/25','荣威','荣威550','展厅','黄雨龙','上汽财务','GM201207250023','申请' UNION ALL
SELECT '抚州运通','2012/7/26','别克','荣威','区域','赵婧','GMAC','GM201207250024','合同' UNION ALL
SELECT '南昌别克','2012/7/27','别克','东本','区域','王凤权','GMAC','GM201207250026','申请' UNION ALL
SELECT '南昌雪佛兰','2012/7/28','雪佛兰','雪佛兰','展厅','李智敏','GMAC','GM201207250028','合同'
GO


--> 测试语句:
select a.[单店],sum(a.[计划数]) as [计划数],month([计划日期]) as [月份],
展厅=sum(case when 销售部门='展厅' then 1 else 0 end),
区域=sum(case when 销售部门='区域' then 1 else 0 end),
实际=sum(case when 订单状态='合同' then 1 else 0 end),
达成率=ltrim(cast(sum(case when 订单状态='合同' then 1 else 0 end)*100.0/sum(a.[计划数]) as decimal(9,2)))+'%'
from [计划表] a,[业务表] b
where a.[单店]=b.[公司名称]
and year([计划日期])=2012
group by a.[单店] ,month([计划日期])
/*
单店 计划数 月份 展厅 区域 实际 达成率
-------- ----------- ----------- ----------- ----------- ----------- ------------------------------------------
抚州运通 20 8 0 1 1 5.00%
南昌别克 60 8 1 1 0 0.00%

(2 行受影响)


*/


大概思路就是这样了 剩下的你自己改一下,为什么是非技术板块呢

移动到技术板块吧。。。
筱筱澄 2012-08-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

统计数量可能是去手误,只要方法对了就行了,
[/Quote]
你这真是坑嫂子有坑你自己啊
lijun2000 2012-08-01
  • 打赏
  • 举报
回复
计划表(公司名称,计划时间,计划数),这个表每个月初会有新的数据导入,计划计算周期为一个月;
日常业务报表(公司名称 日期 所属品牌 车型 销售部门 销售顾问 贷款渠道 订单号 订单状态
)根据这个表可以统计一个月每个公司完成计划的数量,根据销售部门(展厅,区域)来统计当月完成计划的量,最终效果为:
单店 计划 展厅 区域 实际 达成率
南昌别克 32 3 0 3 9%
抚州运通 12 0 0 0 0%
南昌城西别克 19 0 0 0%
南昌雪佛兰 27 2 0 7%
城西雪佛兰 8 2 0 25%
南昌华孚 12 2 0 2 17%
lijun2000 2012-08-01
  • 打赏
  • 举报
回复
高手,计划是每个月一次,完成(展厅,合同)也是统计一个月的,就是每个月的时间怎么控制?
gw6328 2012-08-01
  • 打赏
  • 举报
回复

use db;

declare @t table(单店 varchar(20),计划数 int);
declare @t1 table(公司 varchar(20),销售门部 varchar(10))
--其它字段省略

insert into @t values
('南昌别克',30),
('抚州运通',20)

insert into @t1 values
('南昌别克', '展厅'),
('抚州运通', '区域'),
('南昌别克', '区域'),
('南昌雪佛兰', '展厅');

--select * from @t;
--select * from @t1;

select
b.公司,MAX(a.计划数) as 计划数
,SUM(case when b.销售门部='展厅' then 1 else 0 end) as 展厅
,SUM(case when b.销售门部='区域' then 1 else 0 end) as 区域
,COUNT(1)*1.0/MAX(a.计划数) as 达成率
from @t a join @t1 b on a.单店=b.公司
group by b.公司

/*
公司 计划数 展厅 区域 达成率
-------------------- ----------- ----------- ----------- ---------------------------------------
抚州运通 20 0 1 0.050000000000
南昌别克 30 1 1 0.066666666666
*/


不知道是不是你要的效果。
你最好还是给准确数据。
lijun2000 2012-08-01
  • 打赏
  • 举报
回复
统计数量可能是去手误,只要方法对了就行了,
筱筱澄 2012-08-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

就是一个计划表,一个业务完成记录,最后要按展厅、合同统计计划完成量、完成率,
[/Quote]


南昌别克 30 3

这个 展厅3 你是怎么统计出来的
lijun2000 2012-08-01
  • 打赏
  • 举报
回复
就是一个计划表,一个业务完成记录,最后要按展厅、合同统计计划完成量、完成率,
lijun2000 2012-08-01
  • 打赏
  • 举报
回复
哪里看不懂?
  • 打赏
  • 举报
回复
LZ描述不够完整,还需补充
筱筱澄 2012-08-01
  • 打赏
  • 举报
回复
看不懂怎么来的。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧