すべての結果に対応するものが存在する回数をカウントする結果にSELECT
a を追加して、特定のテーブルのすべてのデータを取得したいと考えています。countField
Item.ResourceId
SELECT Name, ResourceId, (SELECT COUNT(ResourceId) FROM Item GROUP BY ResourceId) AS foo
FROM Item
これを行う方法についてのアイデアはありますか?
これが希望のクエリである場合
SELECT Name, ResourceId, COUNT(*) FROM Item GROUP BY Name, ResourceId;
次のようにLINQに変換されます。
var result = items.GroupBy(item => new { item.Name, item.ResourceId })
.Select(group => new { group.Key.Name, group.Key.ResourceId, Count = group.Count() })
.ToList();
または、このクエリが必要ですか?
SELECT Name,
ResourceId,
(SELECT COUNT(*) FROM Item y WHERE y.ResourceId = x.ResourceId)
FROM
Item x;
これは、次のLINQ式に変換されます。
var result = items.Select(item => new
{
item.Name,
item.ResourceId,
Count = items.Count(x => x.ResourceId == item.ResourceId)
}).ToList();
次の入力が与えられた
Name ResourceId
-----------------
A 1
A 1
B 1
B 2
B 2
C 3
最初のクエリは
Name ResourceId Count
-------------------------
A 1 2
B 1 1
B 2 2
C 3 1
2番目のクエリはこれを生成します。
Name ResourceId Count
-------------------------
A 1 3
A 1 3
B 1 3
B 2 2
B 2 2
C 3 1
これは機能しますか?
SELECT resourceId, count(resourceId) FROM Item GROUP BY resourceId
SELECT Name, ResourceId, ResourceIdCount FROM Item i INNER JOIN (SELECT ResourceId, COUNT(ResourceId) AS ResourceIdCount FROM Item GROUP BY ResourceId ) ic ON i.ResourceId = ic.ResourceId