ROW_の使用NUMBERとpartition byはレポートのクエリーの問題を解決します
1437 ワード
レポートでクエリーの問題が発生しました.元のデータは次のとおりです.
各cust_をクエリーid対応の最初の3つのレコード:
考え方:各cust_に対してROWNUMBERとpartition byを使用idに対応するレコードはシーケンス番号を生成し、生成されたシーケンス番号列に対して操作し、クエリーされた結果セットを生成する.
リスト:
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