我不会深入了解我的表格结构,也不会查询我的查询,这实在是太大了。我将解释一个非常简单的场景,我的问题适用于:
销售人员出售物品。我每个月为每个销售人员制作总销售额。 在某个特定的月份,我们将其销售额翻倍。例如。在2012年2月,如果Pauline已售出价值10,000美元的商品,我们将销售额记录为20,000美元。
我有一张销售表,例如:
Salesman_Id Period Sales
Pauline 201201 4200
Johnny 201201 2000
Rowan 201201 8100
Pauline 201202 3300
Johnny 201202 2900
Rowan 201202 1100
Pauline 201203 8000
Johnny 201203 4000
Rowan 201203 3100
我有一个销售期表,例如:
Sales_Period Double_Period
201201 F
201202 T
201203 F
销售期间表显示2012/02年度是一个双倍期间 - 即您销售的商品的价值翻倍。这意味着在一天结束时,我应该得到:
Salesman_Id Total_Sales
Pauline 18800
Johnny 11800
Rowan 13400
例如,Rowan的销售额= 8100 +(1100 * 2)+ 3100 = 13400
因此,我的问题是:如何将Double_Period考虑在内的每个月的所有销售人员的总销售额报告?这绝不是一个艰难的问题。我希望你们能帮忙。
答案 0 :(得分:2)
在这里,您需要使用SUM()
功能来获得总销售额。如果CASE
,您需要使用Double_Period = T
语句来增加销售额
所以试试这个:
SELECT s.Salesman_Id
, SUM(CASE WHEN sp.Double_Period = 'T'
THEN 2 * s.Sales
ELSE s.Sales END) AS Total_Sales
FROM Sales s
JOIN Sales_period sp
ON s.Period = sp.Sales_Period
GROUP BY s.Salesman_Id
输出:
╔═════════════╦═════════════╗
║ SALESMAN_ID ║ TOTAL_SALES ║
╠═════════════╬═════════════╣
║ Johnny ║ 11800 ║
║ Pauline ║ 18800 ║
║ Rowan ║ 13400 ║
╚═════════════╩═════════════╝