Bel*_*igh 3 sql-server t-sql sql-server-2008-r2
在 SQL Server 2008 中,我有一个结构相似的表。不幸的是,改变数据结构不是一种选择,所以我一直试图想出一个替代方案。我曾尝试运行此查询,但出现以下错误:
(受影响的 5 行)
消息 8114,级别 16,状态 5,第 9行将
数据类型 varchar 转换为数字时出错。
这是 DDL - 应该在查询中更改什么语法才能接收有效输出而不是错误消息?
Declare @GreenHouse Table
(nomen varchar(100), vtc varchar(100), d1 date)
Insert Into @GreenHouse (nomen, vtc, d1) VALUES
('Green', '507.02', '2016-01-14'), ('Green', '4.44089e-015', '2016-01-03')
,('Green', '200.57', '2016-01-18'), ('Green', '649.01', '2016-01-19'),
('Green', '1849.85', '2016-04-30')
Select nomen, Round(Sum(Cast(vtc As Decimal(10,2))),0.00) As FormatedInfo, d1
FROM @GreenHouse Group By nomen, d1 Order By d1 DESC
Run Code Online (Sandbox Code Playgroud)
该4.44089e-015
是最有可能试图将其转换为一个给你的错误decimal
。尝试使用float
:
SELECT nomen,
ROUND(SUM(CAST(vtc AS float)),0.00) FormatedInfo,
d1
FROM @GreenHouse
GROUP BY nomen, d1
ORDER BY d1 DESC;
Run Code Online (Sandbox Code Playgroud)
您的样本数据的结果是:
?????????????????????????????????????
? nomen ? FormatedInfo ? d1 ?
?????????????????????????????????????
? Green ? 1850 ? 2016-04-30 ?
? Green ? 649 ? 2016-01-19 ?
? Green ? 201 ? 2016-01-18 ?
? Green ? 507 ? 2016-01-14 ?
? Green ? 0 ? 2016-01-03 ?
?????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
(是的,我知道它将4.44089e-015
值转换为0
,但预计它是一个浮点数)