2017-09-12 57 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 
相關問題