Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Вывести все возможные значения?  [new]
Azfair
Member

Откуда:
Сообщений: 33
Товарищи вчера писал про даты, благодарен вам за помощь, немного разобрался.
Запнулся на следующем шаге. собственно исходные данные:
есть таблица MATRICS
MM NN
1 1
2 2
3 3
4 4
Значит путем вычислений :
select to_date(MM ||'.'||NN ||'.16', 'dd.mm.yy') dt
from MATRICS
where MM is not null and NN is not null
Получается результат:
1 01.01.2016
2 02.02.2016
3 03.03.2016
4 04.04.2016
Вот.
Но задача состоит в том чтобы получить все возможные даты, то есть их должно быть 16.
Подскажите куда копать дальше?
9 фев 16, 13:07    [18792707]     Ответить | Цитировать Сообщить модератору
 Re: Вывести все возможные значения?  [new]
Opus Magnum
Member

Откуда: 77 Rus
Сообщений: 2205
select rownum from dual connect by rownum < 17

И прибавлять к начальной дате.
9 фев 16, 13:19    [18792799]     Ответить | Цитировать Сообщить модератору
 Re: Вывести все возможные значения?  [new]
две таблицы
Guest
Azfair
Подскажите куда копать дальше?
А если дней надо три - 29, 30, 31, а месяцев 2 - январь и февраль. Что будет в твоем МАТРАСЕ?
9 фев 16, 13:21    [18792817]     Ответить | Цитировать Сообщить модератору
 Re: Вывести все возможные значения?  [new]
Azfair
Member

Откуда:
Сообщений: 33
согласен
9 фев 16, 13:24    [18792844]     Ответить | Цитировать Сообщить модератору
 Re: Вывести все возможные значения?  [new]
Azfair
Member

Откуда:
Сообщений: 33
Логично было бы брать значения первой строки первого столбца и сопоставлять со значениями второго столбца, затем второе значени ит.д. как реализовать?
9 фев 16, 13:28    [18792880]     Ответить | Цитировать Сообщить модератору
 Re: Вывести все возможные значения?  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
Azfair,

select t1.a, t2.b from t t1 cross join t t2
9 фев 16, 13:30    [18792898]     Ответить | Цитировать Сообщить модератору
 Re: Вывести все возможные значения?  [new]
Azfair
Member

Откуда:
Сообщений: 33
а в коде это где вставить?
9 фев 16, 13:55    [18793119]     Ответить | Цитировать Сообщить модератору
 Re: Вывести все возможные значения?  [new]
metrAniksaraT
Member

Откуда: Kiev
Сообщений: 135
Azfair,

select distinct to_char(m1.MM,'FM00')||'.'||to_char(m2.NN,'FM00')||'.2016' fm, to_date (to_char(m1.MM,'FM00')||'.'||to_char(m2.NN,'FM00')||'.2016', 'dd.mm.yyyy') dt
from MATRICS m1
cross join MATRICS m2


Только такой подход невалиден. Как уже писали - кол-во дней в месяцах разные и запрос свалится при неверных диапазонах.
9 фев 16, 14:01    [18793169]     Ответить | Цитировать Сообщить модератору
 Re: Вывести все возможные значения?  [new]
Azfair
Member

Откуда:
Сообщений: 33
согласен, вобще конечно необходимо составить все возможные даты из значений таблицы , в этой таблице есть числа, месяцы, часы и минуты, причем в столбац значения разные, допустим дни: 1,2,3 а месяцы 9,10 и время допустим 15 минут одно значение, логика действий вроде понятна, но реализация хромает
9 фев 16, 14:07    [18793221]     Ответить | Цитировать Сообщить модератору
 Re: Вывести все возможные значения?  [new]
дбмс сцедулер
Guest
Azfair
логика действий вроде понятна, но реализация хромает
что делать понятно, но вот нахрена нужны даты вразнобой, тем более в непонятно структурированной таблице?
9 фев 16, 14:13    [18793278]     Ответить | Цитировать Сообщить модератору
 Re: Вывести все возможные значения?  [new]
Azfair
Member

Откуда:
Сообщений: 33
есть список чисел месяца в таблице и список номеров этих месяцев, понятно что месяцев 12 а чисел 30-31, просто из этих двух столбцов нужно подстановка создать как бы календарь дат, тоесть я хочу сделать что нибудь 1,4,5,6 числа в 3 и 5 месяце, забиваю это в таблицу
Ч М
1 3
4 5
5
6
и хочу увидеть что в итоге
01.03.2016
01.05.2016
04.03.2016
04.05.2016
05.03.2016
05.05.2016
06.03.2016
06.05.2016

уже просто хочу докопаться до истины насколько это возможно сделать
9 фев 16, 16:44    [18794644]     Ответить | Цитировать Сообщить модератору
 Re: Вывести все возможные значения?  [new]
Azfair
Member

Откуда:
Сообщений: 33
Господа я не пытаюсь чужими руками решить задачу, мне просто необходимо понять как это делается, алгоритм вроде в голове понятен, скорее всего здесь надо использовать цикл
9 фев 16, 16:47    [18794667]     Ответить | Цитировать Сообщить модератору
 Re: Вывести все возможные значения?  [new]
Elic
Member

Откуда:
Сообщений: 29990
Azfair
мне просто необходимо понять как это делается
Не майся хернёй. STFF calendaring syntax
9 фев 16, 16:57    [18794773]     Ответить | Цитировать Сообщить модератору
 Re: Вывести все возможные значения?  [new]
32 мая 1783
Guest
Azfair
насколько это возможно сделать
реализовать можно все, что угодно. но практика показывает, что противоречивые требования порождают никому ненужный результат, а попытка обойти противоречия ненормализованной структурой приводит к неработающему никому ненужному результату.
9 фев 16, 17:09    [18794871]     Ответить | Цитировать Сообщить модератору
 Re: Вывести все возможные значения?  [new]
Zhak
Member

Откуда:
Сообщений: 8
with tab(dd, mm) as (
    select 1, 2 from dual union all
    select 4, 5 from dual union all
    select 5, null from dual union all
    select 6, null from dual union all
    select 30, null from dual )
select td.dd
     , tm.mm
     , to_date(to_char(td.dd)||'.'||to_char(tm.mm)||'.2016', 'dd.mm.yyyy') as date_val 
  from tab tm
  join (select level mm from dual connect by level <= 12) m
    on tm.mm = m.mm 
  join (select level dd from dual connect by level <= 31) d
    on d.dd <= extract(day from add_months(to_date('01.'||to_char(m.mm)||'.2016', 'dd.mm.yyyy'), 1) - 1)
  join tab td
    on td.dd = d.dd 
 order by 3
10 фев 16, 16:10    [18799942]     Ответить | Цитировать Сообщить модератору
 Re: Вывести все возможные значения?  [new]
Zhak
Member

Откуда:
Сообщений: 8
with tab(dd, mm) as (
    select 1, 2 from dual union all
    select 4, 5 from dual union all
    select 5, null from dual union all
    select 6, null from dual union all
    select 30, null from dual )
select td.dd
     , tm.mm
     , to_date(to_char(td.dd)||'.'||to_char(tm.mm)||'.2016', 'dd.mm.yyyy') as date_val 
  from tab tm
  join (select level mm from dual connect by level <= 12) m
    on tm.mm = m.mm 
  join (select level dd from dual connect by level <= 31) d
    on d.dd <= extract(day from add_months(to_date('01.'||to_char(m.mm)||'.2016', 'dd.mm.yyyy'), 1) - 1)
  join tab td
    on td.dd = d.dd 
 order by 3
10 фев 16, 16:13    [18799966]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить