0

我有一个这样的表:

  country  |city     |sales | old
  -------------------------------
    USA    | New York|  100 |   1
    USA    | New York|  200 |   0
    USA    | Miami   |   50 |   1
    Canada | Toronto |   20 |   0
    Canada | Toronto |  100 |   0

我想做两件事:

1)我想产生这样的结果,即独特国家-城市对的所有销售额的总和:

  country  |city     |sales|
  --------------------------
    USA    | New York|  300|
    USA    | Miami   |   50|
    Canada | Toronto |  120|

2)我想产生这样的结果,仅新帐户上唯一国家/城市对的所有销售额的总和(旧 = 0)

  country  |city     |sales|
  --------------------------
    USA    | New York|  200|
    Canada | Toronto |  120|

为此我需要哪 2 个 SQL 语句?它目前超出了我的 SQL 新手技能...

ps如果我想做与#2相反的事情,总结旧帐户(太旧!= 0),那么我将如何更改#2的SQL语句

4

2 回答 2

2

您可以使用 CASE 语句(IF..THEN 的 SQL 版本)在一个查询中完成所有操作。

SELECT  Country
        ,City
        ,SUM(Sales) as Tot_Sales 
        ,SUM( CASE WHEN Old = 0 THEN 0 ELSE Sales END) as New_Sales
        ,SUM( CASE WHEN Old = 1 THEN 0 ELSE Sales END) as Old_Sales
FROM    YourTable
GROUP BY
        Country
        ,City

如果您只想查询旧销售,它看起来像这样。对于新销售,您只需更改 WHERE 条件。

SELECT  Country
        ,City
        ,SUM(Sales) as Sales 
FROM    YourTable
WHERE   Old = 1
GROUP BY
        Country
        ,City
于 2013-08-13T14:36:36.780 回答
1

答案1:

SELECT  Country
        ,City
        ,SUM(Sales) as Sales 
FROM    YourTable
GROUP BY
        Country
        ,City

答案2:

SELECT  Country
        ,City
        ,SUM(Sales) as Sales 
FROM    YourTable
WHERE   Old = 1
GROUP BY
        Country
        ,City
于 2013-08-13T14:47:28.810 回答