2017-02-02 3 views
0

こんにちは皆私は私のケースステートメントのためにトータルセールを合計するという問題にぶち当たっています。私は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' 

答えて

0

あなただけの南西市場の日付までの総売上高年にしたい場合は、その市場のための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 
+0

どのように市場のすべての販売と市場の欄について?南西= 7億ドルのように –

0

私は最終的に動作するようにすべてのものを得ました。みんな、ありがとう。ここに私のクエリ

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 
関連する問題