【问题标题】:SUM UP THE BALANCE OF EACH MARKET总结每个市场的平衡
【发布时间】:2017-02-02 05:06:53
【问题描述】:

大家好,我遇到了为我的案例陈述求和总销售额的问题。我尝试在 SalesYTD 前面放置一个 sum 函数,我得到的错误是 sales 旁边的 synthax 错误。我也尝试过按 salesytd 分组,但这不起作用,因为它给了我这个错误 列 'PERSON.STATEPROVINCE.StateProvinceID' 在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。下面是我的查询。我的查询工作正常,我只是得到它来总结我的总数。

 USE AdventureWorks2014; 

 GO 

 SELECT  STATEPROVINCEID,A.NAME,A.COUNTRYREGIONCODE,(b.SALESYTD),  

 CASE 

 WHEN A.TerritoryID = '1' THEN 'WESTERN MARKET' 

 WHEN A.TerritoryID = '2' THEN 'NORTH EASTERN MARKET'

WHEN A.TerritoryID =  '3' THEN 'MID WESTERN MARKET' 

WHEN A.TerritoryID =  '4' THEN 'SOUTH WESTERN MARKET' 

WHEN A.TerritoryID =  '5' THEN 'SOUTH EASTERN MARKET' 
 ELSE 'OTHER' 

 END AS MARKET


FROM PERSON.STATEPROVINCE as A INNER JOIN SALES.SalesTerritory AS B

ON A.TerritoryID = B.TerritoryID 

WHERE A.CountryRegionCode = 'US' 

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    如果您只想要西南市场今年迄今为止的总销售额,那么您可以对该市场的 SALESYTD 列进行条件聚合:

    SELECT SUM(CASE WHEN A.TerritoryID = '4' THEN b.SALESYTD ELSE 0 END) AS total_sales
    FROM PERSON.STATEPROVINCE a
    INNER JOIN SALES.SalesTerritory b
        ON a.TerritoryID = b.TerritoryID
    WHERE a.CountryRegionCode = 'US'
    

    如果您想要所有个地区的总和,那么您可以使用GROUP BY:

    SELECT a.TerritoryID, SUM(b.SALESYTD) AS total_sales
    FROM PERSON.STATEPROVINCE a
    INNER JOIN SALES.SalesTerritory b
        ON a.TerritoryID = b.TerritoryID
    WHERE a.CountryRegionCode = 'US'
    GROUP BY a.TerritoryID
    

    【讨论】:

    • 所有市场的所有销售额和市场列怎么样?像西南 = 7 亿美元
    【解决方案2】:

    我终于把一切都搞定了。谢谢大家。这是我的查询

    SELECT SUM(b.SALESYTD) AS TOTALSALES,
    
    case
    
    when a.TerritoryID = '1' then 'WESTERN MARKET' 
    
    WHEN A.TERRITORYID = '2' THEN 'NORTH EASTERN MARKET' 
    
    when a.TerritoryID = '3' then 'MID WESTERN MARKET' 
    
    WHEN A.TerritoryID = '4' THEN 'SOUTH WESTERN MARKET' 
    
    WHEN A.TERRITORYID = '5' THEN 'SOUTH EASTERN MARKET' 
    
    else 'OTHER' 
    
    end as MARKETS
    
    FROM PERSON.STATEPROVINCE a
    
    INNER JOIN SALES.SalesTerritory b
    
    ON a.TerritoryID = b.TerritoryID
    
    WHERE a.CountryRegionCode = 'US'
    
    GROUP BY a.TerritoryID
    

    【讨论】:

      猜你喜欢
      • 2022-11-28
      • 2022-06-23
      • 2017-06-06
      • 2012-07-19
      • 1970-01-01
      • 2023-01-30
      • 2015-11-20
      • 2023-03-03
      • 1970-01-01
      相关资源
      最近更新 更多