2013-07-15 36 views
3

我正在为我公司创建一份销售绩效分析报告,该报告需要两套销售目标。将详细数据与汇总数据结合起来

  1. 销售现有客户的目标 - 用每个客户为每个客户设置的目标标识一个帐号。每个客户都分配给销售代表,以便我们可以轻松计算该代表的现有销售目标总计。存储在自己的表中。

  2. 新业务的销售目标 - 这是每个销售代表在这个财政年度必须赢得多少新业务的一笔总付数字。存储在自己的表格中,并标出月份,年份,代表和数量。

我的ETL脚本为每个客户创建/更新每个月的新表格行,显示客户的销售额,目标和差异与目标的差异。

我现在面临的问题是如何处理新业务,因为这些数字是整年的一次性总和。如果我把它们联系起来,那么最终的目标是新客户和金额的倍数,而不是真正的总和。

有没有人有类似的经验或项目,这种聚合导致他们的问题?

所以在我的表Sales_Targets我有列:

Company, Account Code, Target Type, Target, Cal Year, Cal Month, Month End 

随着数据:

BWA P001   Large  40000 2013  7   2013-07-31 

在我Other_Targets表我有同样的信息减去账户代码数据已经被概括为我们还不知道哪些帐户是新的。此表中的target type设置为“新”。

丹尼

+1

您能否提供样本数据和预期结果来澄清您的问题? –

+0

您是由客户还是销售代表进行汇总(分组)? – tgolisch

+0

在我的现有销售数据上按月分类。在我的新业务数据上,我想按客户显示销售额,但目标分配给销售代表。我希望它被他们接受的新客户的数量分解。这将等于分配给代表的总目标。大概我采取了正确的方法,如果我不在这里,可以随意把我击倒 –

回答

1

这听起来像你想的账户,实际和目标每个。然后,你想获得两个数字: 1.“其他目标”为销售代表 2.新业务这个销售代表获得

SQL Server中的总数,可以嵌套子选择在外部select子句中查询。你可以嵌套另一个来计算新客户的数量。最后,您可以将这两者分开,以获得分配给该账户的销售代表的平均新客户目标。

它会看起来像下面的查询,但假设结构上的see this Fiddle for more detail

select Account_Code, Cal_YYYYMM, Act_Sales, Sales_Rep 
, coalesce((select sum(Target) from Sales_targets ST 
    where ST.Account_Code=A.Account_Code 
     and ST.Cal_YYYYMM=A.Cal_YYYYMM 
     and ST.Sales_Rep=A.Sales_Rep  
    ),0) SPECIFIC_TARGET 

, coalesce((select sum(Target) from Other_targets ST 
    where ST.Cal_YYYYMM=A.Cal_YYYYMM 
     and ST.Sales_Rep=A.Sales_Rep  
    ),0) SALESMAN_OTHER_TARGET 
, coalesce((select count(*) from Actual_Sales A2 
    where A2.Cal_YYYYMM=A.Cal_YYYYMM 
     and A2.Sales_Rep=A.Sales_Rep 
     and NOT EXISTS 
      (select 1 
       from Sales_Targets ST2 
       where ST2.Account_Code=A2.Account_Code 
       and ST2.Cal_YYYYMM=A2.Cal_YYYYMM 
       and ST2.Sales_Rep=A2.Sales_Rep 
      ) 
    ),0) SALESMAN_NEW_ACCOUNTS 

, coalesce((select sum(Target) from Other_targets ST 
    where ST.Cal_YYYYMM=A.Cal_YYYYMM 
     and ST.Sales_Rep=A.Sales_Rep  
    ),0) 
/coalesce((select count(*) from Actual_Sales A2 
    where A2.Cal_YYYYMM=A.Cal_YYYYMM 
     and A2.Sales_Rep=A.Sales_Rep 
     and NOT EXISTS 
      (select 1 
       from Sales_Targets ST2 
       where ST2.Account_Code=A2.Account_Code 
       and ST2.Cal_YYYYMM=A2.Cal_YYYYMM 
       and ST2.Sales_Rep=A2.Sales_Rep 
      ) 
    ),0) SALES_AVG 

from Actual_Sales A 
+0

完美的是我想要的只是需要的步骤。启动和运行就像一个魅力。 –