我有一个观点。其中一个视图的列包含NVL
函数(如nvl(col1,col2) colA
)。
如果我对此进行查询,我将显示一些记录
例如:select calA from view1;
如果我使用与内联视图相同的查询,我在where子句中使用rownum它什么都不显示
例如:Select * from (select calA from view1) where rownum <10;
如果我
,我会得到相同的记录答案 0 :(得分:0)
看起来你还有其他一些问题。
我尝试了以下操作,您的SELECT
工作正常(返回9行):
CREATE TABLE test_data (col1 INT, col2 INT);
INSERT INTO test_data (
SELECT CASE WHEN MOD(ROWNUM,2) = 1 THEN
NULL
ELSE
ROWNUM/2
END col1,
ROWNUM col2
FROM dual
CONNECT BY ROWNUM <= 20
);
CREATE OR REPLACE VIEW view1 AS (
SELECT NVL(col1, col2) calA FROM test_data
);
SELECT * FROM (SELECT calA FROM view1) WHERE ROWNUM <10;
您能否发布您的观点来源,表格设计以及有关您数据的更多信息?
答案 1 :(得分:0)
这不应该导致问题:
where rownum < 10
但由于生成ROWNUM的方式, 会导致无法返回任何行:
where rownum > 10
-- ^ Greater than