2016-10-10 8 views
1

私のデータは、このようなものである場合にのみ:を選択し、よりXよりも出現箇所

Client Number | Order Date | Order Amount | Sequence (created with Row_Number()) 

私はROW_NUMBER()でシーケンスを作成しているので、私は、クライアントが持っているどのように多くの注文を見ることができます。

私がWHERE Sequence> 3を使用すると、3より前の注文が失われます。すべての注文を確認する必要があるため、HAVINGは使用できません。 3つ以上のオーダーでクライアント番号を選択するにはどうすればよいですか?

私が見たい:

Client Number | Order Date | Order Amount | Sequence 
1111    Jan 01  100    1 
1111    Jan 02  100    2 
1111    Jan 03  100    3 
1112    Jan 01  100    1 
1112    ...   ...    ... 
1112    Jan 20  100    20 

だから、のみ3以上の配列とを、まだシーケンス1と簡単だった2

答えて

0
create table #test(clientnumber int, orderdate datetime, orderamount int) 

insert into #test values 
(1110, '01/01/2016', 100), 
(1110, '01/02/2016', 100), 
(1111, '01/01/2016', 100), 
(1111, '01/02/2016', 100), 
(1111, '01/03/2016', 100), 
(1112, '01/01/2016', 100), 
(1112, '01/02/2016', 100), 
(1112, '01/03/2016', 100), 
(1112, '01/04/2016', 100); 

with cte as(
select clientnumber, orderdate, orderamount, 
count(*) over(partition by clientnumber) as ran 
from #test) 
select * from cte 
where ran >= 3 
+0

まあでラインを維持しながら。 .. どうもありがとうございました! – user107242

2
SELECT * 
    FROM data 
WHERE ClientNumber IN 
(
    SELECT ClientNumber 
    FROM data 
    GROUP BY ClientNumber 
    HAVING COUNT(1) >= 3 
); 
関連する問題