我有个风景。视图的一个列包含NVL函数(如nvl(col1,col2) colA)。如果我对此进行查询,我将显示一些记录。
例:select calA from view1;
如果我使用与内联视图相同的查询,并且在where子句中使用rownum,它将不显示任何内容。
例:Select * from (select calA from view1) where rownum <10;
如果我有同样的记录
中删除nvl
发布于 2010-02-26 10:01:12
看来你还有别的问题。
我尝试了以下方法,您的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;请您张贴您的意见来源,您的表格的设计和一些有关您的数据的更多信息?
发布于 2010-02-26 10:09:54
这不应引起问题:
where rownum < 10但是,由于生成ROWNUM的方式,此将导致不返回任何行:
where rownum > 10
-- ^ Greater thanhttps://stackoverflow.com/questions/2340693
复制相似问题