2016-08-04 12 views
0

私はEmployeeというテーブルがあり、それには約17個の異なる列があります。これらの列の1つを年齢と呼びます。私は、この声明にASを持つ全従業員の平均年齢を得る声明を書くことになっています。ここに私が書いたステートメントがありますが、残念ながらエラーメッセージが表示され続けます。また、私はこれで新しいですので、私を苦しめないでください...笑。select、avg文が動作しない

SELECT AVG(Age) AS Average_Age FROM Employee 

私は..エラーの下に

MSG 8117、状態16、オペランド平均の行1無効な構文を取得します。

私は、平均が計算しようとしているが、できないと伝えていると思います。

なぜこれはYouTubeのビデオで行われたと私はそれを作成した人のために完全に動作するとは思われましたか?私は同じ正確な陳述をしたが、私は間違っていた...誰かがそれを説明することができますか?パーのコメントとして

更新:

エラーメッセージ:

オペランドのデータ型varchar型は平均演算子には無効です。

+0

年齢は何のデータ型である(ただし、データ型を変更することについて考えてよいでしょうか)? –

+1

@IanKenneyデータ型に関係なく、書かれたクエリは構文エラーを返すべきではありません – Lamak

+0

ええと、私はこれが正しくNULLに答えることを願っています。 –

答えて

1

年齢はあなたが試すことができますvarchar型の列がある場合

SELECT AVG(cast(Age as int)) AS Average_Age FROM Employee 

+0

イアン、ありがとう。私はこれを試し、結果が何であるかを見ます。それはしばらく時間がかかります。私はあなたが私に答えるためにタイムアウトを取っていただきありがとうございます。ちょうどSQL初心者で、時には私が間違っていることを知らないうちに非常にイライラします。 –

+3

個人的には、SQL Server 2012以降を使用してシステムで変換エラーを正常に処理する場合は、CASTではなくTRY_CONVERTを使用することをお勧めします。また、変換が失敗した場合、またはプロセスを停止して失敗したことを知る必要がある場合は、NULL値を使用できるかどうかによって異なります。 –

+0

イアン、これは魅力的なように機能してくれて助けてくれてありがとう。 –

関連する問題