我有这个查询
SELECT Reg.id_Movimiento, Tip.NombreTipoMov FROM ut_sgt_Movimientos_t Reg INNER JOIN ut_sgt_TiposMovimientos_m Tip ON Reg.id_TipoMov = Tip.id_TipoMov WHERE Reg.id_Registro = 367
使用此输出:
8 Retiro
6 Marcaje
7 Porteador
5 Descarga
1 Almacenaje
如何选择ID值最高的记录?
我不能使用子查询,设置rowcount或top 1,只能聚合函数,拥有或分组
我试过了:
SELECT Reg.id_Movimiento, Tip.NombreTipoMov FROM ut_sgt_Movimientos_t Reg INNER JOIN ut_sgt_TiposMovimientos_m Tip ON Reg.id_TipoMov = Tip.id_TipoMov WHERE Reg.id_Registro = 367 HAVING Reg.id_Movimiento = MAX(Reg.id_Movimiento)
但输出是
8 Retiro
8 Marcaje
8 Porteador
8 Descarga
8 Almacenaje
答案 0 :(得分:0)
好吧,既然你指定了你不能使用的东西,我会假设其他一切都是公平的游戏。
SET ROWCOUNT 1
SELECT Reg.id_Movimiento, Tip.NombreTipoMov
FROM ut_sgt_Movimientos_t Reg
INNER JOIN ut_sgt_TiposMovimientos_m Tip
ON Reg.id_TipoMov = Tip.id_TipoMov
WHERE Reg.id_Registro = 367
ORDER BY Re.ID DESC
SET ROWCOUNT 0
答案 1 :(得分:0)
我非常确定HAVING需要与Group By功能一起使用。
SELECT Reg.id_Movimiento, Tip.NombreTipoMov
FROM ut_sgt_Movimientos_t Reg
INNER JOIN ut_sgt_TiposMovimientos_m Tip
ON Reg.id_TipoMov = Tip.id_TipoMov
WHERE Reg.id_Registro = 367
GROUP FILTER rank() < 1
GROUP BY Reg.id_Movimiento, Tip.NombreTipoMov
GROUP ORDER BY Reg.id_Movimiento desc
HAVING Reg.id_Movimiento = MAX(Reg.id_Movimiento)
为Sybase发现了一点