ROW_の使用NUMBERとpartition byはレポートのクエリーの問題を解決します

1437 ワード

レポートでクエリーの問題が発生しました.元のデータは次のとおりです.
  
Id    cust_id      call_date         call_result
1	1	2012-03-15 09:00:00	fail
2	1	2012-03-15 09:05:00	number error
3	1	2012-03-15 09:10:00	fail
4	1	2012-03-15 09:15:00	success
5	2	2012-03-15 09:01:00	fail
6	2	2012-03-15 09:06:00	number error
7	2	2012-03-15 09:17:00	fail
8	2	2012-03-15 09:18:00	success
9	3	2012-03-15 09:04:00	fail
10	3	2012-03-15 09:09:00	number error
11	3	2012-03-15 09:19:00	fail
12	3	2012-03-15 09:22:22	success
13	4	2012-03-15 09:07:00	fail
14	4	2012-03-15 09:21:40	success

各cust_をクエリーid対応の最初の3つのレコード:
考え方:各cust_に対してROWNUMBERとpartition byを使用idに対応するレコードはシーケンス番号を生成し、生成されたシーケンス番号列に対して操作し、クエリーされた結果セットを生成する.
  
select Id,cust_id,call_date,call_result from (
select ROW_NUMBER() over(partition by cust_id order by call_date) as [rows],* 
from cust_result)a where a.rows<=3 

リスト:
1	1	2012-03-15 09:00:00	fail
2	1	2012-03-15 09:05:00	number error
3	1	2012-03-15 09:10:00	fail
5	2	2012-03-15 09:01:00	fail
6	2	2012-03-15 09:06:00	number error
7	2	2012-03-15 09:17:00	fail
9	3	2012-03-15 09:04:00	fail
10	3	2012-03-15 09:09:00	number error
11	3	2012-03-15 09:19:00	fail
13	4	2012-03-15 09:07:00	fail
14	4	2012-03-15 09:21:40	success