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'
我认为更重要的是查询没有做你想做的事。 rownum
在 order 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
这个版本或你问题中的版本应该在括号之间工作正常。
我有这个查询:
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'
我认为更重要的是查询没有做你想做的事。 rownum
在 order 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
这个版本或你问题中的版本应该在括号之间工作正常。