-1

同じ文書を 2 回確認するユーザーを取得したい。

私のテーブルは次のようなものです:

emp_num -- serial -- doc_num

私はこのような結果を得たい:

344 -- 11 -- 3
344 -- 12 -- 3
344 -- 13 -- 3
756 -- 45 -- 16
756 -- 48 -- 16

等々。

これどうやってするの?


私の結果:

344 -- 11 -- 3
344 -- 12 -- 3
344 -- 13 -- 3
756 -- 45 -- 16
756 -- 48 -- 16
333 -- 56 -- 77
564 -- 79 -- 87
564 -- 80 -- 87

emp_num = 333 は 1 つのレコードであるため、結果に含めたくありません。

4

2 に答える 2

1

投稿に試みが示されている場合、スタック オーバー フローは「最適に機能」します。これは努力を示し、改良/エラーの説明を可能にし、意図を明確にするのに役立ちます..

いずれにせよ、これは望ましいものに近い可能性があります。

 select t1.*
 from theTable t1
 join theTable t2
 on t1.emp_num = t2.emp_num     -- look at records for same employee
   and t1.doc_num = t2.doc_num  -- that have the same document num
   and t1.serial <> t2.serial   -- but have a different "serial"
于 2012-09-16T09:31:08.120 に答える
1

ほとんどのデータベースには、ウィンドウまたは分析関数と呼ばれるものがあります。これらの 1 つは、グループ内のレコード数をカウントします。このクエリを実行する最良の方法は次のとおりです。

select emp_num, serial, doc_num
from (select emp_num, serial, doc_num,
             count(*) over (partition by emp_num) as totalcount
      from t
     )
where totalcount > 1

パーティション ステートメントには、いくつでもフィールドを入れることができます。従業員ごとのレコードの総数のみをカウントしたいようです。

于 2012-09-16T17:28:38.157 に答える