Combinaison de données de détail avec des données additionnées

J'essaie de créer un rapport d'parsing des performances des ventes pour mon entreprise qui prend deux séries de cibles de vente.

  1. Objectifs de vente pour les clients existants – identifiés avec un numéro de count avec un set cible pour chaque client, pour chaque mois. Chaque client est affecté à un représentant des ventes afin que nous puissions facilement calculer le total cible des ventes pour ce représentant. Stocké dans une table de son propre.

  2. Objectifs de vente pour les nouvelles affaires – Il s'agit d'un montant forfaitaire pour chaque représentant des ventes de combien de nouvelles affaires ils doivent gagner au cours de cette année financière. Stocké dans une table de ses propres avec des colonnes identifient le mois, l'année, rep et donnant le montant.

Mon script ETL crée / met à jour une nouvelle ligne de table pour chaque client pour chaque mois, indiquant les ventes, les cibles et les écarts par rapport à la cible pour le client.

Le problème que j'ai est de savoir comment gérer les nouvelles affaires car ces numbers sont forfaitaires pour toute l'année. Si je les relie simplement, je me refindai avec un objective qui est un multiple du nombre de nouveaux clients et des montants lorsque je le résumerai plutôt qu'un total réel.

Quelqu'un at-il eu une expérience ou un projet similaire où ce type d'agrégation leur a causé des problèmes?

Donc dans ma table Sales_Targets j'ai des colonnes:

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

Avec des données:

 BWA P001 Large 40000 2013 7 2013-07-31 

Dans mon tableau Other_Targets , j'ai la même information less le code du count que datatables ont été généralisées car nous ne soaps pas encore quels counts seront nouveaux. Le target type dans cette table est défini sur "nouveau".

Danny

Il semble que vous voulez get les counts, avec le réel et la cible pour chacun. Ensuite, vous voulez get deux autres numbers: 1. "L'autre cible" pour ce représentant des ventes 2. Le nombre total de nouvelles entresockets ce représentant a obtenu

Dans Sql Server, vous pouvez imbriquer une sous-requête Select dans la clause select externe. Et vous pouvez en imbriquer un autre pour countr le nombre de nouveaux clients. Enfin, vous pouvez les split pour get la cible moyenne de nouveaux clients pour le représentant affecté au count.

Il ressemblera à la requête ci-dessous, mais voir ce Fiddle pour plus de détails sur la structure supposée.

 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