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表中的 设置为“新”。

丹尼

4

1 回答 1

1

听起来您想获取帐户,每个帐户都有实际值和目标值。然后,您想再获得两个数字: 1. 该销售代表的“其他目标” 2. 该销售代表获得的新业务总数

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

它看起来类似于下面的查询,但有关假定结构的更多详细信息,请参阅此 Fiddle 。

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
于 2013-07-16T20:24:49.887 回答