2016-04-01 16 views
1

説明が難しいので、ここで示します。1回の検索で複数の列のSQL結果を同じ列から表示する方法

CallRecordsテーブル:

CallerID CallLength Date 
-------- ---------- ---- 
1000  200   2016-03-28 
1001  300   2016-03-28 
1000  450   2016-03-28 
1002  600   2016-03-28 
1002  610   2016-03-28 
1001  340   2016-03-28 
1000  400   2016-03-28 
1001  444   2016-03-28 
1002  100   2016-03-28 
1000  280   2016-03-28 
1002  670   2016-03-28 
1000  200   2016-03-28 
1001  300   2016-03-28 
1001  450   2016-03-28 
1000  600   2016-03-28 
1002  610   2016-03-28 
1000  340   2016-03-29 
1000  400   2016-03-29 
1002  444   2016-03-29 
1000  140   2016-03-29 
1001  280   2016-03-29 
1001  670   2016-03-29 
1002  400   2016-03-29 
1002  444   2016-03-29 
1001  140   2016-03-29 
1001  280   2016-03-29 
1000  670   2016-03-29 

は、私は、クエリからの出力として表示する:それが取る

CallerID #Calls<3Min Duration #Calls3-5Min Duration #Calls>5Min Duration 
-------- ----------- -------- ----------- -------- ----------- -------- 
1000  1   140  3    680  6   2860 
1001  1   140  4    1160  4   1904 
1002  1   100  0    0   7   3778 

私は複数のSELECT文を使用してみましたが、ここで私のサンプルデータであります長い時間(私のデータベースは実際にははるかに大きくなっています)、むしろ複雑です。クエリをフレーム化する簡単な方法はありますか?

ありがとうございました。

答えて

3

GROUP BYを行い、そしてcount/sum条件を行うにはcase式を使用:

select CallerID, 
     count(case when CallLength < 180 then 1 end) as "#Calls<3Min", 
     sum(case when CallLength < 180 then CallLength else 0 end) as "Duration 3min's", 
     ... 
from tablename 
group by CallerID 
+0

ありがとうございました。素晴らしい答え! – TBowman

関連する問題