SQL 错误子查询缺少右括号

SQL Error Subquery Missing Right Parenthesis

我有这个查询:

SELECT rr.rate_value
FROM rent_rate rr
WHERE rr.item_id = 940
AND rownum = 1
ORDER BY rr.effective_on DESC

它作为一个独立的查询工作,但是当我将它作为子查询插入到我的主查询中时,我收到一条错误消息,说我缺少右括号。

SELECT
c.id,
(
  SELECT rr.rate_value
  FROM rent_rate rr
  WHERE rr.item_id = 940
  AND rownum = 1
  ORDER BY rr.effective_on DESC
) AS the_rate
FROM cages c
WHERE c.id = 9009
AND c.is_hidden = 'N'

我认为更重要的是查询没有做你想做的事。 rownumorder by 处理行 之前过滤行 。因此,您正在提取任意匹配行,按列对一行进行排序并返回另一列中的值。

这是一种计算我认为您的意图的方法:

SELECT MAX(rr.rate_value) KEEP (DENSE_RANK FIRST ORDER BY rr.effective_on DESC)
FROM rent_rate rr
WHERE rr.item_id = 940

这个版本或你问题中的版本应该在括号之间工作正常。