我有一个看起来工作正常的查询,但我想知道是否有更干净(或更合适)的方式来编写它。

目标是在表 ZVBAPIUSW01 中根据给定的用户 ID 查找日期 (UPDPASS) 和时间 (UPDPASSTIME) 最大的记录。

这是我到目前为止所得到的:

SELECT SINGLE * FROM ZVBAPIUSW01
  WHERE OBJID = ID
  AND UPDPASS IN (
    SELECT MAX( UPDPASS ) FROM ZVBAPIUSW01 WHERE OBJID = ID )
  AND UPDPASSTIME IN (
    SELECT MAX( UPDPASSTIME ) FROM ZVBAPIUSW01 WHERE OBJID = ID AND UPDPASS IN (
      SELECT MAX( UPDPASS ) FROM ZVBAPIUSW01 WHERE OBJID = ID ) ).

谢谢你的帮助。
麦克风

最佳答案

你可以试试

SELECT foo bar baz
  FROM ZVBAPIUSW01 UP TO 1 ROWS
  INTO (l_foo, l_bar, l_baz)
  WHERE OBJID = ID
  ORDER BY updpass DESCENDING updpasstime DESCENDING.

关于sql - 如何优化ABAP查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13425575/

10-12 22:43