2016-09-13 9 views
0

私は以下のフォーマットでデータを保持するテーブルを持っています。指定されたsubj-idの別個のadr_idを取得するSQLクエリ

SUBJ_ID |  ADR_ID |  ROW_DT 
--------------------------------------------------- 
200001243385 | 30000001941 | 1999-10-05 09:19:00 
200001243385 | 200001849750 | 2000-12-13 22:28:00 
200001243385 | 30000001942 | 2001-10-05 09:19:00 
200001243385 | 30000001942 | 2000-12-13 22:28:00 

私は特定のクエリ

select top 10 subj_id, 
       adr_id, 
       count(adr_id) 
from db..table_name 
group by subj_id,adr_id 
Having COUNT(adr_id) > 1 

を使用する場合、それはこの形式で答えを返します。

SUBJ_ID  |  ADR_ID  | count 
----------------------------------------- 
200001243385 | 30000001942 |  2 

しかし、私はadr_id年代重複を持ってsubj_idを無視して、この形式で答えを得るために、SQLクエリを知っておく必要があります。

必要な回答:

SUBJ_ID | ADR_ID | count 
----------------------------------------- 
200001243385 | 30000001941 |  1 
200001243385 | 200001849750 |  1 

いずれかが私を助けてくださいことはできますか?

+1

をご質問に答えがあります。 '> 1'の代わりに '= 1'または '<2'を置き換えます.COUNT(adr_id)= 1を持つ –

+0

正しいモハン。ありがとう。 – user2877508

+0

カウント列がすべて1の場合はどうしてですか? – kbball

答えて

1

あなたが必要です:

select top 10 subj_id, adr_id, count(adr_id) [count] 
from db..table_name 
group by subj_id, adr_id 
Having COUNT(adr_id) = 1 

テストケース:

WITH table_name AS 
(
    SELECT * FROM (VALUES 
    ('200001243385','30000001941', '1999-10-05 09:19:00'), 
    ('200001243385','200001849750', '2000-12-13 22:28:00'), 
    ('200001243385','30000001942', '2001-10-05 09:19:00'), 
    ('200001243385','30000001942', '2000-12-13 22:28:00')) T(SUBJ_ID, ADR_ID, ROW_DT) 
) 
select top 10 subj_id, adr_id, count(adr_id) count 
from table_name 
group by subj_id, adr_id 
Having COUNT(adr_id) = 1 

結果:私はあなたがウィンドウ関数をしたいと思います

subj_id  adr_id  count 
------------ ------------ ----------- 
200001243385 200001849750 1 
200001243385 30000001941 1 
0

select top 10 subj_id, adr_id 
from (select t.*, 
      count(*) over (partition by subj_id, adr_id) as cnt 
     from db..table_name t 
    ) t 
where cnt > 1; 

出力に「1」の列が含まれる理由がわかりません。しかし、あなたが好きなら、それを追加することができます。

0

ただ、1に等しくなければならない回数を指定するには、あなたの「持つ」節を更新するか、またはあなたがクエリを結合したい場合は、完全にhaving句削除:ここでテスト

SELECT subj_id, adr_id, count(*) 
FROM t 
GROUP BY subj_id, adr_id 

http://sqlfiddle.com/#!9/cc918/3

関連する問題