Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / смена даты / 22 сообщений из 22, страница 1 из 1
19.07.2016, 15:31:48
    #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
19.07.2016, 15:33:30
    #39276372
wiiild_che
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
смена даты
таблица за 2015 имеет точно такие же атрибуты
...
Рейтинг: 0 / 0
19.07.2016, 15:40:27
    #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
19.07.2016, 15:43:11
    #39276390
wiiild_che
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
смена даты
Fogel,он берет все записи за 2016 год,но как можно не указывая значения взять данные за 16 год? в этом и возникла сложность
...
Рейтинг: 0 / 0
19.07.2016, 15:45:56
    #39276393
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
смена даты
wiiild_cheFogel,он берет все записи за 2016 год,но как можно не указывая значения взять данные за 16 год? в этом и возникла сложность
вместо констант используйте переменные и подавайте их на вход процедуре
...
Рейтинг: 0 / 0
19.07.2016, 15:47:12
    #39276396
wiiild_che
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
смена даты
Fogel,
в данном примере у меня их 3, значит по каждой надо?
...
Рейтинг: 0 / 0
19.07.2016, 15:48:02
    #39276397
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
смена даты
wiiild_cheно как можно не указывая значения взять данные за 16 год?
sysdate :)
...
Рейтинг: 0 / 0
19.07.2016, 15:49:00
    #39276398
wiiild_che
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
смена даты
123йй,
не:(
...
Рейтинг: 0 / 0
19.07.2016, 15:50:05
    #39276401
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
смена даты
wiiild_cheFogel,
в данном примере у меня их 3, значит по каждой надо?
не занимайтесь тупой подстановкой, разберитесь
19427678
...
Рейтинг: 0 / 0
19.07.2016, 15:52:32
    #39276403
wiiild_che
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
смена даты
Fogel,я по-этому сюда написал
...
Рейтинг: 0 / 0
19.07.2016, 15:55:14
    #39276409
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
смена даты
wiiild_cheFogel,я по-этому сюда написал
Код: plaintext
1.
"   Но, если туп, как дерево - родишься баобабом
    И будешь баобабом тыщу лет, пока помрешь." (c)
...
Рейтинг: 0 / 0
19.07.2016, 15:56:56
    #39276413
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
смена даты
wiiild_cheFogel,я по-этому сюда написал
для изучения не обязательно сюда писать, можно использовать поиск
...
Рейтинг: 0 / 0
19.07.2016, 16:17:20
    #39276448
wiiild_che
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
смена даты
Fogel, в оракле новичок, ладно, попробую сам разобраться как сделать, спасибо
...
Рейтинг: 0 / 0
19.07.2016, 16:33:12
    #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
19.07.2016, 16:36:07
    #39276469
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
смена даты
wiiild_cheв оракле новичокзабыл пароль от wild_che позапрошлого года?
...
Рейтинг: 0 / 0
19.07.2016, 16:40:19
    #39276472
wiiild_che
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
смена даты
Fogel,буду учиться,спасибо вам большое
...
Рейтинг: 0 / 0
19.07.2016, 16:45:02
    #39276477
wiiild_che
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
смена даты
-2-,my double:)
...
Рейтинг: 0 / 0
19.07.2016, 17:25:23
    #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
19.07.2016, 17:39:57
    #39276536
wiiild_che
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
смена даты
Moss,супер:)
...
Рейтинг: 0 / 0
19.07.2016, 17:41:35
    #39276538
wiiild_che
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
смена даты
а к примеру, если на входе я вожу дату которая присутствует в заполненной таблице, но я не хочу чтоб тогда она заполнялась, то надо будет полностью все переписать?
...
Рейтинг: 0 / 0
19.07.2016, 17:54:21
    #39276554
Moss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
смена даты
wiiild_che,

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


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