По поводу SQL-запроса - PullRequest
       5

По поводу SQL-запроса

1 голос
/ 02 июля 2010

У меня есть SQL-запрос ниже, чтобы вставить записи из таблицы. Проблема заключается в том, что когда нет записей для запроса выбора, я все еще хочу запись с порядковым номером, нулем, вставленным значением «3». Ничего не вставляется, когда не найдена запись для запроса выбора. как я могу это сделать?

insert into test_details(seqnbr,trepid,type)
select '&seqid'
      ,REP_ID
      ,'3'
  FROM ref_details
 WHERE REP_ID >13;

Ответы [ 2 ]

4 голосов
/ 02 июля 2010

Один путь будет

insert into test_details(seqnbr,trpid,type)
select '&seqid',rep_id,'3' from ref_details where rep_id>13
union all select '&seqid',null,'3'
from dual where not exists(
select 1 from ref_details where rep_id>13)
3 голосов
/ 02 июля 2010

Oracle 9i +:

Чтобы заполнить пробелы, вам нужно создать список последовательных значений :

INSERT INTO TEST_DETAILS
  (seqnbr, trpid, type)
 SELECT '&seqid', rd.rep_id, '3'
     FROM (SELECT LEVEL + 13
             FROM DUAL
       CONNECT BY LEVEL <= 13) x
LEFT JOIN REF_DETAILS rd ON rd.rep_id = x.level
                        AND rd.rep_id > 13

... затем присоединиться ктаблица, которая может иметь пробелы.

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