Проблема с ROWNUM - PullRequest
       15

Проблема с ROWNUM

0 голосов
/ 26 февраля 2010

У меня есть вид. один из столбцов представления содержит функцию NVL (например, nvl(col1,col2) colA). и если я сделаю запрос на это, я покажу некоторые записи

Пример: select calA from view1;

и если я использую тот же запрос, что и встроенное представление, и использую rownum в предложении where, он ничего не отображает

Пример: Select * from (select calA from view1) where rownum <10;

Я получаю те же записи, если я

  • попробуйте без rownum в предложении where
  • убрать nvl из вида

Ответы [ 2 ]

0 голосов
/ 26 февраля 2010

Это не должно вызывать проблем:

where rownum < 10

Но это будет приводить к тому, что строки не будут возвращены из-за способа генерации ROWNUM:

where rownum > 10
          -- ^ Greater than
0 голосов
/ 26 февраля 2010

Похоже, у вас есть другая проблема.

Я попробовал следующее, и ваш 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;

Не могли бы вы опубликовать источник вашего представления, дизайн таблицы и дополнительную информацию о ваших данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...