2012-04-16 7 views
1

私はテーブルロギングアプリケーションアクティビティを持っています。 各行にはDateTime( "Time")列と "EventType"列が含まれています(ここでは重要ではないものもあります)複数のカウントを同じテーブルから時間でグループ化することを選択します。

さまざまなEventTypesの数を取得したいと考えています毎時間発生します。

私は現在で単一イベントタイプの基本的な数を取得しています。同じ時間内に複数の異なるイベントタイプをカウントし、これを拡張する最も簡単な方法は何ですか

select DATEADD(hh, (DATEDIFF(hh,0,Time)),0) as 'hour', count(*) as 'apploads' 
from PlaySessionEvent 
where EventType = 0 
Group By DATEADD(hh,(DATEDIFF(hh,0,Time)),0) 
order by hour 

?私は、すべてのイベントタイプのサブセットが利用可能にしたいので

::更新

は、指定された、私はちょうどaswellイベントタイプによってグループ化されたやりなさい持っている必要があります。 (退屈なトレース/デバッグデータではない) また、DateTimeエントリを複製する追加の行ではなく、さまざまなイベントタイプを列として使用したいと考えました。

例:...

DateTime   EventType1  EventType2 
12:12:12 12/12/12 45    22 

不正確最初の質問のために謝罪!

+0

リストやグループを選択するイベントタイプを追加しますby- –

答えて

4

編集:変更された質問に対する

新ソリューション:ここ

select DATEADD(hh, (DATEDIFF(hh,0,Time)),0) as 'hour', count(*) as 'apploads', 
sum(case when EventType = 1 then 1 else 0 end) EventType1, 
sum(case when EventType = 2 then 1 else 0 end) EventType2 
from PlaySessionEvent 
where EventType = 0 
group By DATEDIFF(hh,0,Time) 
order by hour 

はそれを書くの少し異なる方法である:

select DATEADD(hh, (DATEDIFF(hh,0,Time)),0) as [hour], 
     COUNT(*) [apploads], 
     COUNT(case when EventType = 1 then 1 end) EventType1, 
     COUNT(case when EventType = 2 then 1 end) EventType2 
from PlaySessionEvent 
where EventType = 0 
group By DATEDIFF(hh,0,Time) 
order by hour 
+0

完璧、ありがとう! –

関連する問題