我試圖只拿到資產的最近位置,我發現this,下面的例子。我這樣做:TSQL獲取最近的記錄
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
但是我卻越來越sintax近「ELSE」的錯誤,這意味着該錯誤是在這裏:
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
預先感謝您
您是否嘗試運行兩個不同的SQL語句自己先驗證它們?我建議分而治之 - 將其中一個SQL語句改爲SELECT 1並保存SP。然後改變其他...然後刪除IF。 SP錯誤消息通常不會有幫助,您的代碼對我來說看起來很好。 – 2013-04-08 01:47:03