0

SQL Server でクエリを実行して、テーブル (tableA) 内のすべての要素を別のテーブルの集計で選択したい

select a.*,  count(b.number) from tableA a
inner join tableB b on a.id = b.a_id
group by a.id;

これにより、次のエラーが発生します。

エラー: 列 'a.id' は、集計関数にも GROUP BY 句にも含まれていないため、選択リストでは無効です。

SQLState: S1000
エラーコード: 8120

私が欲しいものを取得するための正しいクエリは何ですか?

4

5 に答える 5

1

あなたはそれを使うことができます

select a.*, x.number
from tableA a
inner join
   (select b.a_id, count(b.number) number
   from tableB b
   group by b.a_id) x
on x.a_id = a.id
于 2013-09-27T05:45:41.327 に答える
0
select a.*,  
      (Select count(b.number) from tableB b where b.a_id = a.id) as "b count"
   from tableA a;
于 2013-09-27T05:45:23.870 に答える
0

group by を含むクエリでは、すべての列が集計関数または group by list で言及されている必要があります。あなたのエラーは、 id を除くテーブル 'a' 列が group by リストに記載されておらず、集計関数で表示されないためです。

于 2013-09-27T05:48:15.187 に答える
0
select a.*, B.number
from tableA a
inner join
(
a.id a_id,  count(b.number) number from tableA a
inner join tableB b on a.id = b.a_id
group by a.id;
) B on B.a_id = a.id 
于 2013-09-27T05:48:55.080 に答える
0

を使用a.*すると、 からすべての列が選択されるためですtableA。集計関数groubyなどを使用する場合は、group by 句で列名を指定する必要があります。この方法を試してください

select a.id,a.name,  count(b.number) from tableA a
inner join tableB b on a.id = b.a_id
group by a.id,a.name

すべての列を選択する場合は、tableAgroup by を使用できません。

select a.*,  count(b.number) from tableA a
inner join tableB b on a.id = b.a_id
于 2013-09-27T05:49:38.537 に答える