【发布时间】:2018-09-13 19:20:32
【问题描述】:
SELECT x.Key, x.ID,
MAX(CAST(CASE WHEN x.Display IS NULL THEN 0
WHEN x.Display = 'Class' THEN 0
WHEN x.Display = 'pricing' THEN 0
WHEN x.Display = 1912.995 THEN 1913
ELSE x.Display END as float)) AS GLwritten
FROM x
inner join y on y.rk_pk = x.pk
group by x.Key, x.ID
如果我没有输入 WHEN x.Display = 1912.995 THEN 1913,则会出现以下错误: 将 nvarchar 值“1912.995”转换为数据类型 int 时转换失败。
x.Display 是 nvarchar。 不幸的是,我无法控制该列的设计。
错误是在将 nvarchar 值 '1912.995' 转换为数据类型 int 时转换失败。
【问题讨论】:
-
那是因为您将数字和字符串存储在同一列中。您必须将其更改为 ...when x.Display = '1912.995' then...而且您真的应该考虑在这里重新设计。
-
有 no SQL Server 2010 - 我们有 2000、2005、2008、2008 R2、2012、2014、2016 和 2017 - 拿你的选择...
标签: sql-server