SQL只显示带连接的双重条目

时间:2018-01-29 13:45:40

标签: sql sql-server join

我有2个表,表1在erp_key列中有双重条目。

Table1
erp_key article_key
1       a1
2       a2  
3       a3  
3       a4  
4       a5  
5       a6  
5       a7  
6       a8  

我找到了一种方法来检测具有以下查询的方法:

SELECT erp_key, Count (erp_key)
from Table1
group by erp_key
having Count (erp_key) > 1

现在我想通过使用article_key加入下表并使用'descr'。和'date'也包含在查询输出中。

Table2
descr.  article_key date
a       a1          3-1-2017
s       a2          4-4-2017    
d       a3          5-4-2017    
f       a4          6-4-2017    
g       a5          7-4-2017    
h       a6          8-4-2017    
j       a7          9-4-2017    
k       a8          1-4-2017

我来到这个问题,我认为hower COUNT(erp_key)是不正确的。它不计算多个erp_key条目。

Select erp_key, Table1.article_key, descr, date_, COUNT(erp_key) AS counter
From            Table1
full outer join Table2
on Table2.article_key = Table1.article_key
group by erp_key, Table1.article_key, descr, date_,
having COUNT(erp_key) > 1
ORDER BY erp_key ASC

即使尝试了一天以上,我也找不到使用SQL查询执行此操作的方法。 有没有办法做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:1)

喜欢这个吗?

SELECT a.erp_key, Count (a.erp_key), b.descr. , b.date
from Table1 a, Table2 b
where a.article_key = b.article_key
group by a.erp_key
having Count (a.erp_key) > 1

答案 1 :(得分:0)

此查询将返回所有带有日期和descr的文章,其中ERP_Key大于1:

select a.erp_key,a.article_key,b.descr,b.date
from Table1 a
    join  (SELECT erp_key
           from Table1
           group by erp_key
           having Count (erp_key) > 1) sub on sub.erp_key=a.erp_key
    join Table2 b on a.article_key=b.article_key

以下查询可能更清楚,但效率较低:

select a.erp_key,a.article_key,b.descr,b.date
from Table1 a
    join Table2 b on a.article_key=b.article_key
where a.erp_key in (SELECT erp_key
                    from Table1
                    group by erp_key
                    having Count (erp_key) > 1)