2011-01-03 8 views
0

ハードコードされた値をエリミネートする際にエラーが発生しました。代わりに、私は一時テーブルを使用して...単純なSELECTステートメントを記述する必要があり、このcase文の実行中にエラーが発生しました

...

だから私は、一時テーブルを使用してコードを書かれている
select case [BVG] 
    when 1 then 1 
    when 2 then 2 
    when 3 then 3 
end as Q0, 

SELECT CASE [AVG] 
    when 1 then 1 
    when 1.33 then 2 
    when 1.5 then 2 
    when 1.67 then 3 
    when 2 then 3 
    when 2.33 then 4 
End as Q 

FROM [MS].[BE].[Survey] 

.....

SELECT [Source], [Score] 

INTO #Temp_Table 

FROM [MS].[dbo].[S_Survey] 

WHERE [data_Source] = 'USA' 
代わりに、私は、このselect文を交換しています、その場合文の

....

SELECT q.[Score] as Q --- Getting error in this place.Data Type is varchar (100). 

FROM [MS].[BE].[Survey] s 

LEFT OUTER JOIN #Temp_Table q on 

s.[AVG] = q.[Source] 

しかし、私は取得していますティンエラー実行....エラーが浮いているように、データ型VARCHAR変換

メッセージ8114、レベル16、状態5、行1 エラーです。代わりにq.[score] as Q私は何を書くことができます....とどのように私は、構文を書くことができるの近くにその場所の

...

おかげで、 Sahsra

答えて

2

あなたは平均的なVARCHARすることはできません。

は、私はs.AVGがfloatであるとq.Sourceがないことを推測している。この

SELECT [Source] , cast([Score] as decimal (10,2))--or whatever you need it to be 

INTO #Temp_Table 

FROM [MS].[dbo].[S_Survey] 

WHERE [data_Source] = 'USA' 
+0

[AVG]は集計の使用ではなくフィールド名であるため、ここでは「平均varcharsを使用できません」が適用されます。 –

+0

私に返信してくれてありがとう。しかし、小数点を置くと問題があります。その列には1つの値 'NULL'があります。私たちが小数点を置くと、それは 'NULL'を受け入れることはありません...だから私は今何をするでしょう... – Shahsra

+0

[AVG]列は彼らが取ったちょうど名前です...彼らは何も集約していません.... – Shahsra

0

を試してみてください。これにより、SQL ServerがJOIN ON s.[AVG] = q.[Source]で暗黙の変換を行い、値の1つが文字ではありません。この問題が最後に発生したときには、my answerまたは Martin'sのいずれかをもう一度見てください。

SELECT q.[Score] 
FROM [MS].[BE].[Survey] s 
WHERE like Score '%[^0-9.]%' 

あなたが4つの文字値「NULL」を削除する必要がある場合UPDATEおそらく

SELECT q.[Score] as Q --- Getting error in this place.Data Type is varchar (100). 

FROM [MS].[BE].[Survey] s 

LEFT OUTER JOIN #Temp_Table q on 

s.[AVG] = q.[Source] 
and q.[Source] <> 'NULL' 

それとも、#にそれらを挿入することができませんでした(テストしていません)、次の行うことができますTemp_Tableで始まります。

また、JOINを試す前にこれらの値を削除することもできます。

もちろん、#temp_tableで数値型を使用しているのはなぜですか?

+0

こんにちは感謝のためにありがとうが、私はすでに私のケースでは動作していない....しようとしましたいくつかの値は 'NULL'を含むため1,2,3 1,2,3,3,2,2,3,2,5です。 .. – Shahsra

+0

"<> 'NULL'"が正しく表示されません。 'IS NOT NULL'(実際の値が 'null'でないと悪い設計でない限り)でなければなりません。 – IamIC

+0

@IanCその悪いデザインなので私の説明 "4文字の値 'NULL'を削除する必要がある場合 –

関連する問題