7

考えられる最も単純なクエリの1つであると思ったことを実行すると、このエラーが発生します。他の人もここで問題に遭遇しているのを見て、私が見たすべての解決策を調べましたが、彼らはより複雑なクエリを使用しているため、問題を特定するのは非常に困難でした。問題を説明するために、小さなダミーテーブルを作成しました。

テーブル名:grouptest

id  name
1   Mel
2   Lucy
3   Mandy
4   Mel
5   Mandy
6   Mel

次のようなテーブルを作成するために、各名前が何回表示されるかを調べたいと思います。

3 Mel
2 Mandy
1 Lucy

これが私がうまくいくと思うクエリです:

SELECT Count(id), Name
FROM groupbytest
GROUP BY 'Name'

そして、私はエラーを受け取ります:

各GROUPBY式には、外部参照ではない列が少なくとも1つ含まれている必要があります。

ヘルプ!

4

3 に答える 3

7

[名前]フィールドの前後に不要な引用符があります。

SELECT Count(id), Name
FROM grouptest
GROUP BY Name

あなたのコメントに基づいて、あなたはCASTあなたのNameコラムに必要です:

SELECT Count(id), Cast(Name as Varchar(max)) Name
FROM grouptest
GROUP BY Cast(Name as Varchar(max))
于 2012-07-31T18:44:20.373 に答える
5

'に負けるGROUP BY

SELECT Count(id), Name 
FROM groupbytest 
GROUP BY Name

がの場合nameは、textにキャストする必要がありVARCHARますが、列を切り捨てている可能性があります。

SELECT Count(id), CAST(Name AS VARCHAR(8000)) AS Name
FROM groupbytest 
GROUP BY CAST(Name AS VARCHAR(8000))
于 2012-07-31T18:44:04.297 に答える
0

あなたが欲しい:

SELECT Count(id), [Name]
FROM groupbytest 
GROUP BY [Name]

GROUP BY 'Name'列ではなく、リテラル文字列'Name'でグループ化しようとしますName

Nameまた、予約語である可能性があるため、列を呼び出さない方がよい場合でも、括弧で囲みますName

于 2012-07-31T18:44:00.743 に答える