SQL Server から奇妙な動作が発生しています。金額フィールドを返す基本ビューがあります。その金額フィールドは VARCHAR(50) から FLOAT にキャストされています。
次のクエリを正常に実行できます。
SELECT AMOUNT
FROM vReturnDetails
次のクエリも正常に実行できます。
SELECT AMOUNT
FROM vReturnDetails v
INNER JOIN MyTable t
ON t.LicenceNumber = v.LicenceNumber
AND t.ReturnYear = v.ReturnYear
WHERE t.ReturnYear = 2012
同様に、次のクエリを実行できます。
SELECT AMOUNT
FROM vReturnDetails v
INNER JOIN MyTable t
ON t.LicenceNumber = v.LicenceNumber
AND t.ReturnYear = v.ReturnYear
WHERE t.ReturnYear <> 2012
ここが奇妙になりますが、次のいずれも実行できません。
SELECT AMOUNT
FROM vReturnDetails v
INNER JOIN MyTable t
ON t.LicenceNumber = v.LicenceNumber
AND t.ReturnYear = v.ReturnYear
WHERE t.ReturnYear = 2012 OR t.ReturnYear <> 2012
SELECT AMOUNT
FROM vReturnDetails v
INNER JOIN MyTable t
ON t.LicenceNumber = v.LicenceNumber
AND t.ReturnYear = v.ReturnYear
ただし、このクエリを正常に実行できます。
SELECT AMOUNT
FROM vReturnDetails v
INNER JOIN MyTable t
ON t.LicenceNumber = v.LicenceNumber
AND t.ReturnYear = v.ReturnYear
WHERE t.ReturnYear <> 2013 --2013 is a dummy value that doesn't exist
ここのカバーの下で何が起こっているのか、誰かに光を当てることができますか. 私にはまったく意味がないので、問題を解決するためにどこから始めればよいかわかりません。
私が受け取っているエラーは
データ型 varchar を float に変換中にエラーが発生しました。
これはSql Server 2008 SP2にあります