24

表 1 のすべての列を選択しようとしているストアド プロシージャがあります。Table1 の主キーを外部キーとして使用する別の表があります。次のように選択して、この外部キーテーブルのレコード数をカウントしたい:

SELECT *, count(*) VacancyCount
    FROM Table1 hc
    LEFT JOIN Table2 hv
    on hc.CompanyID = hv.CompanyID  
    WHERE hc.Deleted = 0
    group by hc.CompanyID
    ORDER BY NameLang1

しかし、それはエラーを出します:

列 'dbo.Table1.NameLang1' は、集計関数にも GROUP BY 句にも含まれていないため、選択リストでは無効です。

これを修正する方法を提案してください。

4

4 に答える 4

2

GROUP BY 句のすべての列をリストする必要があります。
これらの列はSELECT *ビット内の列です。

とにかく、これは正しい ANSI SQL です。

SELECT *とにかく、それ自体が悪いです: 列を明示的にリストする方が常に良いです

于 2013-05-15T08:46:12.067 に答える
0

このようにして、group byに列リストを含めてみてください

 SELECT column1,column2,column3..,NameLang1,count(*) VacancyCount
FROM Table1 hc
LEFT JOIN Table2 hv
on hc.CompanyID = hv.CompanyID  
WHERE hc.Deleted = 0
group by column1,column2,column3
ORDER BY NameLang1
于 2013-05-15T09:09:09.907 に答える