首页 > 解决方案 > LIMIT 运算符和错误:ORA-00933:SQL 命令未正确结束

问题描述

我有包含 ClientID NUMBER (15,0)、 ProductPrice NUMBER (15,0)、 ProductQuantity NUMBER (21,0)、 ProductName VARCHAR2(50)、 BuyDate列的表DATE

我执行下面的脚本来提取每个客户花费更多钱的 ProductName:

SELECT ClientID, MAX(ProductPrice * ProductQuantity) AS ForProduct
FROM TESTVIEW 
WHERE BuyDate BETWEEN TO_DATE('01.01.2020','MM.DD.YYYY') AND TO_DATE('01.05.2020','MM.DD.YYYY')
GROUP BY ClientID
ORDER BY ClientID, ForProduct DESC LIMIT 1

但是,我收到错误 ORA-00933:SQL 命令未正确结束。没有运算符 LIMIT 它可以正常工作。是什么原因,我怎样才能得到我需要的结果?

标签: sqloracle

解决方案


根据您的评论,使用ROW_NUMBER()

SELECT t.*
FROM (SELECT ClientID, MAX(ProductPrice * ProductQuantity) AS ForProduct,
             ROW_NUMBER() OVER (PARTITION BY ClientId ORDER BY MAX(ProductPrice * ProductQuantity) DESC) as seqnum
      FROM TESTVIEW 
      WHERE BuyDate BETWEEN DATE '2020-01-01' AND DATE '2020-01-05'
      GROUP BY ClientID
     ) t
WHERE seqnum = 1;

推荐阅读