powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / смена даты
22 сообщений из 22, страница 1 из 1
смена даты
    #39276368
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица с данными за 2015 год, нужно заполнить таблицу на следующий год, в данном запросе все значений берутся за 2016 год, но у меня в запросе указано значение дат:
2015-12-31, как можно не указывая значения дат заполнить таблицу таблицу?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
create or replace procedure test_proc
as
begin


insert into test
select * from(
with qq as (
         select  date '2015-12-31' + level dt
             from  dual
             connect by date '2015-12-31' + level <= date '2016-12-31'
          )
select  case grouping(data)
          when 0 then to_char(data,'ddspth "of "fmMonth, yyyy','NLS_DATE_LANGUAGE = AMERICAN')
          else to_char(trunc(data,'mm'),'mm')
        end name,
        case grouping(data)
          when 0 then to_char(data,'ddspth')
          else to_char(trunc(data,'mm'),'fmMonth','NLS_DATE_LANGUAGE = AMERICAN')
        end short_name,
        case grouping(data)
          when 0 then 1
          else 3
        end date_level,
        case grouping(data)
          when 0 then 'day'
          else 'localperiod'
        end date_level_name,
        case grouping(data)
          when 0 then to_char(data,'dd.mm.yyyy')
          else to_char(trunc(data,'mm'),'dd.mm.yyyy')
        end start_date,
        case grouping(data)
          when 0 then to_char(data,'dd.mm.yyyy')
          else to_char(last_day(trunc(data,'mm')),'dd.mm.yyyy')
        end finish_date,
        case to_char(data, 'dd')-to_char(data, 'dd')
          when 0 then 1
          else 31
         end count_day_period,
        to_char (data, 'd') n_day_w,
        to_char (data, 'dd') n_day_m,
        to_char (data, 'ddd') n_day_y,
        to_char (data, 'ww') n_week_y,
        to_char (data, 'mm') n_month_y,
        to_char (data, 'q') n_quart_y, 
        case when to_char(data,'mm') < 7 
          then 1 
          else 2 
        end n_halfyear_y,
        to_char (data, 'YYYY')n_year,
        to_char (data, 'dd.mm.yyyy')calendar_date,
        to_char (data, 'Month','NLS_DATE_LANGUAGE = AMERICAN') month_eng,
        to_char (data, 'Mon','NLS_DATE_LANGUAGE = AMERICAN') short_month_eng,
        to_char (data, 'Month','NLS_DATE_LANGUAGE = RUSSIAN') month_rus,
        to_char (data, 'Mon','NLS_DATE_LANGUAGE = RUSSIAN') short_month_rus,
        case  to_char(last_day(data),'dd')- to_char(last_day(data),'dd')
          when 0 then 0
          else 1
        end is_lastday_m,
        to_char (data, 'yyyy/mm','NLS_DATE_LANGUAGE = RUSSIAN') year_month,
        to_char (data, 'yyyymm','NLS_DATE_LANGUAGE = RUSSIAN') month_key
from  qq
group by grouping sets((trunc(data,'mm')),(trunc(data,'mm'),data)))aa ;

                                  
end;
...
Рейтинг: 0 / 0
смена даты
    #39276372
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
таблица за 2015 имеет точно такие же атрибуты
...
Рейтинг: 0 / 0
смена даты
    #39276384
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разберитесь, что делает
Код: plsql
1.
2.
3.
select  date '2015-12-31' + level dt
             from  dual
             connect by date '2015-12-31' + level <= date '2016-12-31'


после понимания сможете менять его на любой год
...
Рейтинг: 0 / 0
смена даты
    #39276390
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fogel,он берет все записи за 2016 год,но как можно не указывая значения взять данные за 16 год? в этом и возникла сложность
...
Рейтинг: 0 / 0
смена даты
    #39276393
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wiiild_cheFogel,он берет все записи за 2016 год,но как можно не указывая значения взять данные за 16 год? в этом и возникла сложность
вместо констант используйте переменные и подавайте их на вход процедуре
...
Рейтинг: 0 / 0
смена даты
    #39276396
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fogel,
в данном примере у меня их 3, значит по каждой надо?
...
Рейтинг: 0 / 0
смена даты
    #39276397
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wiiild_cheно как можно не указывая значения взять данные за 16 год?
sysdate :)
...
Рейтинг: 0 / 0
смена даты
    #39276398
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
123йй,
не:(
...
Рейтинг: 0 / 0
смена даты
    #39276401
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wiiild_cheFogel,
в данном примере у меня их 3, значит по каждой надо?
не занимайтесь тупой подстановкой, разберитесь
19427678
...
Рейтинг: 0 / 0
смена даты
    #39276403
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fogel,я по-этому сюда написал
...
Рейтинг: 0 / 0
смена даты
    #39276409
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wiiild_cheFogel,я по-этому сюда написал
Код: plaintext
1.
"   Но, если туп, как дерево - родишься баобабом
    И будешь баобабом тыщу лет, пока помрешь." (c)
...
Рейтинг: 0 / 0
смена даты
    #39276413
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wiiild_cheFogel,я по-этому сюда написал
для изучения не обязательно сюда писать, можно использовать поиск
...
Рейтинг: 0 / 0
смена даты
    #39276448
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fogel, в оракле новичок, ладно, попробую сам разобраться как сделать, спасибо
...
Рейтинг: 0 / 0
смена даты
    #39276466
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wiiild_cheFogel, в оракле новичок, ладно, попробую сам разобраться как сделать, спасибо
в помощь для понимания:
сравните
Код: plsql
1.
2.
3.
select  date '2015-12-31' + level dt
             from  dual
             connect by date '2015-12-31' + level <= date '2016-12-31'


и
Код: plsql
1.
2.
3.
select  date '2015-12-31' + level dt
             from  dual
             connect by level <= 365



это идентичные выборки или нет и почему,
какой запрос лучше использовать для использования вместо констант переменных, если знаете какой год нужно выбрать,
а какой, если не знаете, какой у вас будет год,
как модифицировать запрос, чтобы он от 31 декабря считал в прошлое до 1 января
ну и т.п.

если хотите именно научиться...
...
Рейтинг: 0 / 0
смена даты
    #39276469
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wiiild_cheв оракле новичокзабыл пароль от wild_che позапрошлого года?
...
Рейтинг: 0 / 0
смена даты
    #39276472
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fogel,буду учиться,спасибо вам большое
...
Рейтинг: 0 / 0
смена даты
    #39276477
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-,my double:)
...
Рейтинг: 0 / 0
смена даты
    #39276522
Moss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то делал с одной таким может и не очень удачным способом но работает..
Код: plsql
1.
2.
3.
SELECT dt + LEVEL - 1 day_of_year
  FROM (SELECT trunc(SYSDATE, 'yyyy') AS dt FROM dual)
CONNECT BY LEVEL <= add_months(dt, 12) - dt
...
Рейтинг: 0 / 0
смена даты
    #39276536
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Moss,супер:)
...
Рейтинг: 0 / 0
смена даты
    #39276538
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а к примеру, если на входе я вожу дату которая присутствует в заполненной таблице, но я не хочу чтоб тогда она заполнялась, то надо будет полностью все переписать?
...
Рейтинг: 0 / 0
смена даты
    #39276554
Moss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wiiild_che,

сильно не вникал про что кино, но думаю стоит посмотреть в сторону MERGE
если тебе нужно либо инсерт либо апдейт либо ничего не делать
...
Рейтинг: 0 / 0
смена даты
    #39276586
wiiild_che
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Moss,попробовал через условие not in, все работает
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / смена даты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]