2017-08-18 15 views
0

私はグラフのためにGoogle Chartsに送信する情報を取得しようとしています。Activeの列を見ていますが、それは真/偽になりますがデータベースではvarcharに設定されています。このクエリを使用してvarcharカラムでCASEを使用した変換エラー

SELECT 
    SUM(CASE WHEN CONVERT(int, Active) Active = 1 THEN 1 ELSE 0 END) AS Active, 
    SUM(CASE WHEN CONVERT(int, Active) Active = 0 THEN 1 ELSE 0 END) AS Inactive 
FROM 
    Events 

は、このエラーがスローされます。

Conversion failed when converting the varchar value 'True' to data type int.`

+1

なぜ「アクティブ」はビットではなくvarchar列ですか? –

+0

intではなくビットに変換してください。 – FJT

+0

@TimSchmelterシステム全体が構築されていて、アプリケーションの他の多くの場所に影響する可能性があるので、タイプを変更することを恐れています。 – UserSN

答えて

2

int型は、それらがビット SQL Serverで呼ばれている....ブール値ではありません。試してみる。

SELECT 
SUM(CASE WHEN CONVERT(bit, Active) = 1 THEN 1 ELSE 0 END) AS Active, 
SUM(CASE WHEN CONVERT(bit, Active) = 0 THEN 1 ELSE 0 END) AS Inactive 
FROM Events 

またはあなたの文字列

SELECT 
SUM(CASE WHEN Active = 'True' THEN 1 ELSE 0 END) AS Active, 
SUM(CASE WHEN Active = 'False' THEN 1 ELSE 0 END) AS Inactive 
FROM Events 

P.S.ための単なるテストブール値を文字列として格納することは愚かなのです...列をビット列に変更して変換する必要がないようにすることを検討してください。

+1

それは私に '' Active 'の近くに条件が期待される文脈で指定された非ブール型の式を与えます。 – UserSN

+0

サブクエリであなたのエイリアスができないからです。私のような線が見える – Milney

+0

編集をありがとう、それは動作しました。 12分が経過するとすぐに受け入れます。ありがとうございました。 – UserSN

関連する問題