SQL错误子查询缺少右括号

时间:2016-03-07 21:34:20

标签: sql oracle subquery

我有这个问题:

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'

1 个答案:

答案 0 :(得分:3)

我认为更重要的是查询没有做你想要的。 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

您的问题中的此版本或版本在括号之间应该可以正常工作。