我试图只获取资产的最新位置,我发现了这个,按照那个例子。我这样做了:
ALTER PROCEDURE [SISACT].[index_activo_ubicacion]
@ubicado BIT = 1
AS
BEGIN
IF @ubicado = 1
SELECT activo,
ubicacion
FROM
(SELECT activo,
ubicacion,
Fecha_Ubicacion,
row_number() OVER (partition BY activo
ORDER BY abs(datediff(dd, Fecha_Ubicacion, getdate())))
FROM [SISACT].ACTIVO_UBICACION)
ELSE
SELECT Activo FROM [SISACT].ACTIVOS_FIJOS a
WHERE NOT EXISTS (
SELECT Activo FROM [SISACT].ACTIVO_UBICACION u
WHERE a.Activo = u.Activo
)
END
但是我在“ELSE”附近收到了一个错误sintax,这意味着错误在这里:
SELECT activo,
ubicacion
FROM
(SELECT activo,
ubicacion,
Fecha_Ubicacion,
row_number() OVER (partition BY activo
ORDER BY abs(datediff(dd, Fecha_Ubicacion, getdate())))
FROM [SISACT].ACTIVO_UBICACION)
但我不知道我做错了什么,因为我对 TSQL 还很陌生。谁能帮我?
在 ACTIVO_UBICACION 表中将有许多具有相同 ACTIVO 但不同 Fecha_Ubicacion 的记录,我想选择所有 ACTIVO 但只选择日期最近的那些。意义
Activo | Ubicacion | Fecha_Ubicacion
------------------------------------
Activ | 1244 | 2012-04-02 15:42:33
FixedA | 4556 | 2012-05-05 13:33:34
Activ | 4553 | 2012-05-06 22:11:45
FixedA | 2S01 | 2012-07-10 12:44:20
Activ | 1114 | 2013-03-14 14:33:45
意味着它应该返回
Activo | Ubicacion | Fecha_Ubicacion
------------------------------------
FixedA | 2S01 | 2012-07-10 12:44:20
Activ | 1114 | 2013-03-14 14:33:45
先感谢您