2016-04-08 51 views
0

だから私は、インシデントテーブルを持っている:複数のSQLクエリ

incidentID | threatlevel | typeOfIncident | region 
    __________________________________________________ 
     1   5    H1N5   West 
     2   5   Zombie Apocalyse West 
     3   5   Zombie Apocalyse South 
     4   5    H1N5   North 
     5   5   Zombie Apocalyse East 
     6   3   Zombie Apocalyse West 

私は事件の2つの異なるタイプに基づいて、各地域のthreatlevelの合計を取得するにはどうすればよいですか? 私はGROUP BY領域を試しましたが、すべての類似領域が削除されています。

は、どのように私は、単一のSQL文で、これらすべての値を取得するについて行くことができます。

例えばについて

北地域からゾンビの黙示録のための0の合計threatlevel、南地域からゾンビの黙示録のための5の

総threatlevel、East地域からゾンビの黙示録のための5の

総threatlevel、

ウエスト領域からゾンビ黙示録8の

合計threatlevel、北領域からH1N5 5の

総threatlevel、

0ウエスト領域からH1N5 5のEastregion

総threatlevelからH1N5 0のSouthregion

総threatlevelからH1N5 0の

合計threatlevel、

戻るように: 0 AS ZombieNorth、ZombieSouth AS 5は、H1N5North AS ZombieEast、8 ZombieWest、5 AS 5、H1N5East AS H1N5South、0 AS 0、5 H1N5West、

+0

ようこそ。 [よくある質問と回答](http://stackoverflow.com/help/on-topic)[よくある質問とその回答](http://stackoverflow.com/help/on-topic) -ask) [完璧な質問](http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/) – RiggsFolly

+1

無関係なタグを削除しました。実際に使用しているデータベースに質問にタグを付けてください。 –

答えて

0

はこれを試してみてください:

SELECT typeOfIncident, 
     SUM(CASE WHEN region = 'West' THEN threatlevel ELSE 0 END) AS WestThreatLevel, 
     SUM(CASE WHEN region = 'East' THEN threatlevel ELSE 0 END) AS EastThreatLevel, 
     SUM(CASE WHEN region = 'North' THEN threatlevel ELSE 0 END) AS NorthThreatLevel, 
     SUM(CASE WHEN region = 'South' THEN threatlevel ELSE 0 END) AS SouthThreatLevel 
FROM mytable 
GROUP BY typeOfIncident 

SELECT句は、それぞれ別個regionためthreatlevelの和を計算するために条件凝集を使用します。すべてのデータベースで

+0

@Janooying質問を更新して、提供されたサンプルデータに期待される結果セットを含めることはできますか? –

2

、あなたがGROUP BYのための2つのキーを使用することができますに:

select typeOfIncident, region, sum(threatlevel) as total_threatlevel 
from t 
group by typeOfIncident, region; 
0

あなたは私を混乱させるあなたの質問に次のようにあります

からゾンビの黙示録のための8の合計threatlevel西部地域

...

ウエスト領域からゾンビ黙示録5の合計threatlevel

第二つ

ウエスト領域からH1N5 5の合計threatlevel

されているべきであると仮定するとそれで答えは

SELECT 
region 
,typeOfIncident 
,SUM(threatLevel) 
FROM 
<table> 
GROUP BY 
region 
,typeOfIncident 
; 
だと思います