仅选择第一个结果

Ale*_*nor 9 sql oracle oracle10g

我写了以下查询:

SELECT CLIENT.CLIENTNO, CLIENT.CNAME, TOTALS.TOTAL 
FROM CLIENT, (SELECT CLIENTNO, SUM(AMOUNT) AS TOTAL 
              FROM PURCHASE GROUP BY CLIENTNO) TOTALS 
WHERE CLIENT.CLIENTNO = TOTALS.CLIENTNO AND ROWNUM <= 1 
ORDER BY TOTALS.TOTAL DESC;
Run Code Online (Sandbox Code Playgroud)

但是它给了我错误的答案,但是如果我删除了该ROWNUM <= 1子句,那么正确的答案就在结果集的顶部.

那么我可以在此查询中更改哪些内容以使其生成正确的答案?

谢谢,亚历克斯.

编辑:忘了说我只希望查询返回结果集中的第一个结果.

Luk*_*der 16

ROWNUM过滤器适用分拣之前.你需要做的是:

SELECT * FROM (
  SELECT CLIENT.CLIENTNO, CLIENT.CNAME, TOTALS.TOTAL 
  FROM CLIENT, (SELECT CLIENTNO, SUM(AMOUNT) AS TOTAL 
                  FROM PURCHASE GROUP BY CLIENTNO) TOTALS 
  WHERE CLIENT.CLIENTNO = TOTALS.CLIENTNO 
  ORDER BY TOTALS.TOTAL DESC
)
WHERE ROWNUM <= 1 
Run Code Online (Sandbox Code Playgroud)