2017-10-23 14 views
1

複数の列を単一のクエリで返すテーブルにクエリを書き込む必要があるアプリケーションで作業しています。複数の列を単一のクエリで取得する

研究の後、私は単一のsourceIdのクエリを開発することができましたが、複数のsourceIdsの結果が必要な場合はどうなりますか。

私は誰がどのように私は結果セットを返すために、私のクエリを修正することができ、助けることができます(3,4,5,6)

例えば、いくつかのソースIDのTotalNewCountとTotalOldCountを取得する必要があります

select '3'as sourceId, 
    (select count(*) from event where sourceId = 3 and plateCategoryId = 3) as TotalNewCount, 
    (select count(*) from event where sourceId = 3 and plateCategoryId = 4) as TotalOldCount; 

あなたが一度にすべてのソースIDを行うことができ、リスト内のすべてのソースのデータを含む3つの列(3,4,5,6)

おかげ

+0

MySQLまたはVerticaを使用していますか?質問に適切なタグを付けてください。 –

+0

私は両方を使用しています。 現時点でスケーラビリティをテストしています。 –

答えて

0

select source_id 
     sum(case when plateCategoryId = 3 then 1 else 0 end) as TotalNewCount, 
     sum(case when plateCategoryId = 4 then 1 else 0 end) as TotalOldCount 
from event 
group by source_id; 

ソースIDを制限する場合は、wheregroup byの前に)を使用します。

注:上記はVerticaとMySQLの両方で動作し、標準SQLはどのデータベースでも動作するはずです。

+0

ありがとう@Gordon。それはVerticaで働いているようです。 –

関連する問題