問題を実証するためのテストテーブルがあります。
Id NetworkId CountryCode
1 1 de
2 2 de
3 2 de
4 2 de
5 1 us
6 1 us
7 1 us
8 2 us
次のようなものを出力する必要があります。
NetworkId CountryCode DistCount
1 de 1
2 de 3
1 us 3
2 us 1
試行されたクエリ
SO でいくつかの回答を探しましたが、必要なものを正確に見つけることができませんでした。最初の関連する質問と私が試したクエリは次のとおりです。
クエリ:
SELECT NetworkId, CountryCode, COUNT(*) as DistCount
FROM (SELECT DISTINCT NetworkId, CountryCode FROM TestTable) AS FOO
GROUP BY NetworkId, CountryCode
結果:
NetworkId CountryCode DistCount
1 de 1
1 us 1
2 de 1
2 us 1
クエリ:
SELECT COUNT(DISTINCT(STR(NetworkId) + ',' + STR(CountryCode)))
FROM TestTable
結果:
Msg 8114, Level 16, State 5, Line 1
Error converting data type nvarchar to float.
この質問の回答も試しました:クエリを繰り返さずに個別の複数フィールドをカウントするにはどうすればよいですか?
クエリ:
SELECT
NetworkId,
CountryCode,
COUNT(*) OVER(PARTITION BY NetworkId, CountryCode) as DistCount
FROM TestTable
GROUP BY NetworkId, CountryCode
結果:
NetworkId CountryCode DistCount
1 de 1
1 us 1
2 de 1
2 us 1
おわかりのように、これを行う方法を理解するのに苦労しています...比較的単純であるべきだと思いますが、何かが欠けています。