1

我不会详细介绍我的表结构和查询,说实话这有点大。我将解释我的问题适用的一个非常简单的场景:

推销员出售物品。我为每个推销员计算每个月的总销售额。在某个特定的月份,我们将他们的销售额翻倍。例如,在 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

例如,罗文的销售额 = 8100 + (1100*2) + 3100 = 13400

因此,我的问题是:考虑到 Double_Period,我如何生成每个月所有销售人员的总销售额报告?这一定不难。我希望你们能提供帮助。

4

1 回答 1

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 ║
╚═════════════╩═════════════╝

看到这个 SQLFiddle

于 2013-05-02T10:01:17.407 回答