Как вставить данные в таблицу базы данных Oracle с помощью PL SQL, которая включает 365 дней в году - PullRequest
0 голосов
/ 26 февраля 2019

У меня уже есть стол, встроенный в оракула.Я пытаюсь вставить некоторые данные, которые выглядят следующим образом:

I want the data to look like this

Но я не могу добавить DATE вместе сID, ГОД и ИНДИКАТОР.

Мне удалось получить ДАТУ с 01.01.2009 с 19:00 до 31.12.2009 с 19:00.

Example of only date

КОД:

INSERT INTO TABLE(DATE)
select to_date('01-01-2019 7:00:00 PM', 'DD-MM-YYYY HH:MI:SS PM') + rownum -1 dt from dual 
connect by level <= to_date('05-01-2019 7:00:00 PM', 'DD-MM-YYYY HH:MI:SS PM') - 
                    to_date('01-01-2019 7:00:00 PM', 'DD-MM-YYYY HH:MI:SS PM') + 1;

Когда я исключаю ДАТУ, это выглядит так:

Example of ID, YEAR and INDICATOR

КОД:

INSERT INTO TABLE (ID, YEAR, INDICATOR)
Values (sequ.nextval, '2019', 'X') ;

Я пытался объединить два кода, но это не работает.Есть ли другие способы, которые я могу сделать, чтобы это работало?Или я делаю это неправильно?Единственное изменение данных - это ДАТА, потому что он должен быть 365 днями 2019 года. ГОД и ИНДИКАТОР остаются одинаковыми для всех данных.

Ответы [ 2 ]

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

Еще короче (при условии, что вы можете рассчитать текущий год):

insert into table( id, date, year, indicator) 
    select sequ.nextval, to_date('31-12-2018 07:00:00', 'DD-MM-YYYY HH24:MI:SS') + rownum, 2019, 'X' from all_objects where rownum <= 365

Или, если вы предпочитаете не использовать таблицу ALL_OBJECTS:

insert into table( id, date, year, indicator) 
    select sequ.nextval, to_date('31-12-2018 07:00:00', 'DD-MM-YYYY HH24:MI:SS') + level, 2019, 'X' from dual connect by level <= 365
0 голосов
/ 26 февраля 2019

Это то, что вы хотите?

insert into table(id, "date", "year", indicator)
    select rownum, dt, extract(year from dt), 'X'
    from (select to_date('01-01-2019 7:00:00 PM', 'DD-MM-YYYY HH:MI:SS PM') + rownum - 1 as dt
          from dual 
          connect by level <= to_date('05-01-2019 7:00:00 PM', 'DD-MM-YYYY HH:MI:SS PM') - 
                        to_date('01-01-2019 7:00:00 PM', 'DD-MM-YYYY HH:MI:SS PM') + 1
         ) t;
...