2017-12-19 8 views
-1

同じメールが1一部の列上の個別カウントする方法を

DB #Reportと同じreportID数で同じ日に読めばカウントするSQL結果でカウント列を追加したいと思います:

Reportid Name Country Doc  ReadDate  Email 
100  AA HK  011abc 2017-12-01 [email protected] 
100  BB HK  011abc 2017-12-01 [email protected] 
200  BB HK  012abc 2017-12-20 [email protected] 
200  BB HK  012abc 2017-12-21 [email protected] 
300  CC HK  013abc 2017-12-22 [email protected] 
300  CC HK  013abc 2017-12-22 [email protected] 
300  CC HK  013abc 2017-12-22 [email protected] 

Expected outcome: 
    Reportid Name Country Doc  Date  Count 
    100  AA HK  012abc 2017-12-01 1 
    200  BB HK  012abc 2017-12-20 2 
    300  CC HK  012abc 2017-12-22 1 

私のSQLは以下の通りですが、カウントを行うために期待される結果を計算することに失敗しました。 DB内のすべての行とeveryrow count = 1を生成します。

Select ReportId,Name,Country, Doc, Date, count(distinct concat(ReportId,Date,email)) 
from #Report 
Group by Reportid,Name,Country, Doc, Date, email 
+1

どのDBを使用していますか?そして、そのSQL Serverの場合、どのバージョンですか? – tarheel

答えて

0

これを試すことができます。 group byからDate列を削除するだけです。

Select ReportId,Name,Country, Doc, MIN(Date) Date, count(distinct concat(ReportId,Date,email)) 
from #Report 
Group by Reportid,Name,Country, Doc, email 
0

ReportIdでのみグループ化し、電子メールで追加し、readdateはnull条件ではありません。別のReportId、email、readdateをカウントし、他のフィールドの最小値をとります。

ReportIdと電子メールがnullフィールドではないことを考慮してください。

関連する問題