您能帮我找到我似乎无法转换为整数吗?

问题描述

要做的就是从每个“ Scan”中提取最新的“ location”(因此称为“ LastScan”),然后找出其中是否有两个小时或更长时间“ old'(这会使它们过期)。

Select cast(max(entered_date) as int) as 'LastScan',location
FROM housing_activity
WHERE 'LastScan' <= Datediff(HH,-2,GETDATE())
Group by location

这是我的错误

Msg 245,Level 16,State 1,Line 2
Conversion Failed when converting the varchar value 'LastScan' to data type int.

解决方法

尝试

; WITH cte AS (
SELECT
  location,LastScan = entered_date,RN = ROW_NUMBER() OVER (PARTITION BY location ORDER BY entered_date DESC)
FROM housing_activity 
)
SELECT 
  *
FROM cte
WHERE 
   RN = 1
   AND LastScan <= DateAdd(hour,-2,GETDATE())