我有一个表,源中包含非数字值。
我正在使用 CTE 过滤到一组全是数字的值。
但是,当我尝试将过滤后的列表转换为浮动时,出现错误。
目标是找到所有低于 8.0 的实验室结果
热电偶:
;with labs AS (
SELECT LabResult_Result
FROM VIEW_PatientLabResult
WHERE (LabResult_DateTimeOfObservation between '1/1/2012' and '1/1/2013') and
MasterLabCode_Description='Hemoglobin (Hgb) A1c'
)
结果大约 250 行,所有这些都是十进制的(手动检查)。
无法将它们转换为浮动进行比较。到目前为止我最好的是:
select * from
(
select *, CAST( labresult_result as float) as Converted
FROM labs
) Conv
WHERE Conv.Converted < 8.0
这导致Error converting data type varchar to float.
没有该WHERE
子句,查询运行良好。
我在想 SQL 试图在 CTE 过滤器之前转换整个结果。有没有办法让它按顺序运行?