SQL转换NTEXT - > VARCHAR - > FLOAT并有所作为

时间:2017-03-06 16:18:13

标签: sql sql-server reporting-services diff ntext

我有两个字段,一个是int,另一个是ntext。我需要从int字段中减去ntext字段。我正在使用Hours_Current这是int字段并将它潜水60.我已经调试了一段时间并且可以确认第一个CAST正在工作并按预期除以60。然后我将nText字段转换为float并从小时减去时间。数据库中的时间字段有一些条目是数字(我需要的),有些条目是文本(不需要)。

SELECT
CAST(SUM(Hours_Current) AS FLOAT)/60 AS 'Current Hours'
CONVERT(FLOAT, CONVERT(VARCHAR(MAX), ObjField)) AS 'Time',
'Time' - 'Current Hours' AS DIFF

我尝试了无数种不同的方法来实现这一目标。我获得"操作数数据类型varchar的大部分时间对于减法运算符"无效。我的最终目标是在报告中使用它。我还取出了DIFF并使用SSRS表达式尝试减去这两个字段,并在报告中得到#Error。

我已经看过this链接并试过了,但它似乎无法正常工作。我已经查看并在线查看了,我发现的一些文章想要讨论ntext如何折旧。遗憾的是,我无法更改数据库架构。有什么想法吗?

我也尝试使用nvarchar而不是varchar。

1 个答案:

答案 0 :(得分:1)

您不能在同一select子句中的select子句中使用别名。 您必须执行两次计算或使用cte / derived表:

SELECT
CAST(SUM(Hours_Current) AS FLOAT)/60 AS [Current Hours]
CONVERT(FLOAT, CONVERT(VARCHAR(MAX), ObjField)) AS [Time],
     (CAST(SUM(Hours_Current) AS FLOAT)/60) - 
     (CONVERT(FLOAT, CONVERT(VARCHAR(MAX), ObjField))) As [Diff]
FROM ...

OR

z