查询从2个不同的表中提取总和,这是否可以在一个查询中进行?

时间:2009-11-01 23:22:24

标签: sql sql-server

感谢目前为止的所有帮助,现在我遇到了一个重大问题!

我有2个包含每日佣金的表格,每天 ,我必须从每个表格中提取每日总数。每日限额最高为100美元,因此每天超过100美元的价格为100美元。

员工(employeeID INT PK,totalCommisions INT)

现在包含委托数据的2个表是:

ProductSales(productID INT,employeeID INT,Commission INT,Created DATETIME)

推荐(referalID INT,employeeID INT,佣金INT,创建DATETIME)。

员工每天可以有10个产品销售,50个推荐。 关键是,产品销售和推荐的佣金总和,如果超过100美元,则设定为100美元(即每日最高100美元)。

我需要的查询是更新Employee表TotalCommission列,其中包含每位员工的总佣金(整个期间,没有日期范围)。

查询必须使用CASE语句,因为每日总数不能超过100美元(当天的ProductSales和Referrals的佣金总和)。

上一个问题: Query to get sum of an employees commission

2 个答案:

答案 0 :(得分:1)

使用子查询可以轻松实现。您编写简单查询以使用一个表执行该操作,对另一个表执行相同操作然后将这两个表连接起来并执行您在select部分中必须执行的操作。 查询看起来像这样:

SELECT(这里是案例和总结) FROM(来自ProductSales的查询)OUTER JOIN(来自Refferals的查询)ON(...)

答案 1 :(得分:1)

也许是这样的事情 -

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)