2017-09-12 52 views
0

我试图计算重复的列数DP &列RN在一起,其中科尔EDate有一个特定的月份。SQL计数重复其中字段具有相同的月份

我有这个将统计一个月的所有单个事件,但我不能计算出如何修改这个来计算这个月份有多少重复。

SELECT count(*) FROM (SELECT * FROM (Select DP, RN, EDate, COUNT(*)OVER(PARTITION BY DP, RN) AS your_count 
     from ETable) a WHERE your_count = 1 and Month(EDate) = 08) as x 

例(试图DP的所有重复计数& RN在一起,其中一个月是八月)

DP   RN  EDate 
DP1  RP1  2017-08-09  <--yes 
DP2  RP1  2017-08-09 
DP3  RP1  2017-08-09  <--yes 
DP1  RP2  2017-08-09 
DP2  RP1  2017-07-09 
DP1  RP1  2017-08-09  <--yes 
DP3  RP1  2017-08-09  <--yes 

结果 计数= 2

+2

请向我们展示您的_exact_所需输出。 –

回答

3

基于从原来的答案澄清,这里有一个修改答案(原文如下)

select dp, rn, month(edate), count(month(edate)) 
from table1 
where not exists 
( 
    select * 
    from table1 t1 
    where t1.dp = table1.dp 
    and t1.rn = table1.rn 
    and month(t1.eDate) <> month(table1.eDate) 
) 
group by dp, rn, month(edate) 
having count(month(edate)) > 1 

这个怎么样?

select dp, rn, month(edate), count(month(edate)) 
from eTable 
group by dp, rn, month(edate) 
having count(month(edate)) > 1 

http://sqlfiddle.com/#!6/cc9cf/3

下也将纳入年:

select dp, rn, format(edate,'MM-yyyy'), count(format(edate,'MM-yyyy')) 
from eTable 
group by dp, rn, format(edate,'MM-yyyy') 
having count(format(edate,'MM-yyyy')) > 1 

http://sqlfiddle.com/#!6/f658b/5

+0

如果其中一个副本是来自另一个月,我需要从计数中排除任何DP RN,这是可能的吗?因此,以下我不希望将DP1 RP1包含在计数中http://sqlfiddle.com/#!6/f03c2 – Ryan

+0

您能解释一点吗? – meisen99

+0

例如,你只需要8月份的结果?你可以添加一个where子句,或者“where MONTH(eDate)= 8”或者“where MONTH(eDate)= 8 AND YEAR(eDate)= 2017” – meisen99

0

你可以尝试看看有多少重复存在使用此查询

SELECT SUM(CASE WHEN your_count > 1 THEN 1 ELSE 0 END) 
FROM (SELECT DP, 
       RN, 
       EDate, 
       COUNT(*) OVER(PARTITION BY DP, RN) AS your_count 
     FROM ETable 
     WHERE Month(EDate) = 08) a 
相关问题