在sybase ase中选择id值最高的记录

时间:2015-06-16 18:24:09

标签: sql sybase sybase-ase

我有这个查询

    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

2 个答案:

答案 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发现了一点