如何获得同一用户的结果?

时间:2012-09-16 09:16:13

标签: sql database

我想让那些为同一文档确认两次的用户。

我的表格是这样的

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,因为它是一条记录。

2 个答案:

答案 0 :(得分: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"

答案 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

您可以在分区语句中添加许多字段。您似乎只想按员工计算记录总数。