1

すべての結果に対応するものが存在する回数をカウントする結果にSELECTa を追加して、特定のテーブルのすべてのデータを取得したいと考えています。countFieldItem.ResourceId

SELECT Name, ResourceId, (SELECT COUNT(ResourceId) FROM Item GROUP BY ResourceId) AS foo
FROM Item

これを行う方法についてのアイデアはありますか?

4

3 に答える 3

2

これが希望のクエリである場合

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
于 2013-01-09T18:09:57.480 に答える
0

これは機能しますか?

SELECT resourceId, count(resourceId) FROM Item GROUP BY resourceId

于 2013-01-09T17:24:45.370 に答える
0

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

于 2013-01-09T18:18:06.653 に答える