-1

我想获得对同一文档进行两次确认的用户。

我的桌子是这样的

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 包含在结果中,因为它是一条记录。

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

大多数数据库都有称为窗口或分析函数的东西。其中之一将计算组中的记录数。执行此查询的最佳方法是:

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