我想让那些为同一文档确认两次的用户。
我的表格是这样的:
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,因为它是一条记录。
答案 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
您可以在分区语句中添加许多字段。您似乎只想按员工计算记录总数。