2009-11-01 5 views
0

Merci pour toute l'aide jusqu'à présent, maintenant je viens de rencontrer un problème majeur!Requête pour extraire la somme de 2 tables différentes, est-ce possible dans une requête?

J'ai 2 tables qui contient des commissions quotidiennes, et pour chaque jour, je dois SUM les totaux quotidiens de chaque table. La limite quotidienne est fixée à 100 $, donc tout ce qui dépasse 100 $ pour la journée est de 100 $.

employé (employeeID INT PK, totalCommisions INT)

Maintenant, les 2 tables qui contiennent des données Comission sont:

ProductSales (productID INT, employeeID INT, commission INT, créé DATETIME)

Parrainages (ID de référence, employé ID INT, commission INT, Créé DATETIME).

Un employé peut avoir 10 ventes de produits par jour et 50 références. Le point clé est que la somme de la commission pour les ventes de produits et les parrainages, si elle est supérieure à 100 $, est fixée à 100 $ (c'est-à-dire 100 $ max par jour).

La requête dont j'ai besoin est de mettre à jour la colonne TotalCommission des tables des employés avec le total des commissions gagnées pour chaque employé (période entière, pas de plage de dates).

La requête devra utiliser une instruction CASE étant donné que le total quotidien ne peut pas dépasser 100 $ (somme des commissions des ProductSales et des références pour la journée).

Question précédente: Query to get sum of an employees commission

+0

au moins, vous devez fournir un lien à votre question précédente, puisque c'est un dérivé directement de celui-ci: http://stackoverflow.com/questions/1658421/query-to-get-sum d'une commission des employés/1658468 # 1658468 – Amber

Répondre

1

Peut-être quelque chose comme ça -

select employeeID, Year(Created), Month(Created), Day(Created), 
case 
    WHEN sum(Commission) > 100 THEN 100 
    ELSE sum(Commission) 
END 
from 
(
    select employeeID, Created, commission from ProductSales 
    UNION ALL 
    select employeeID, Created, commission from Referrals 
) Commissions 
group by employeeID, Year(Created), Month(Created), Day(Created) 
1

Ceci peut être facilement réalisé en utilisant les sous-requêtes. Vous écrivez une requête simple pour faire la chose avec une table, faites la même chose avec une autre, puis joignez les deux et faites ce que vous avez à faire dans une partie choisie. La requête se penchera STH comme ceci:

SELECT (va ici le cas et sommateur) DE (requête de ProductSales) OUTER JOIN (requête de refferals) ON (...)

Questions connexes