问题描述
我要做的就是从每个“ 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())