我有两个字段,一个是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。
答案 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