|
|
|
Джойн различных диапазонов дат
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток, господа. Возникла острая необходимость связать две таблицы, однако испытал при этом первую трудность. Первая таблица имеет следующий вид: idtransdateamount1562018-01-02500.651562018-01-03500.651562018-01-04500.65231 2018-01-04 1.12231 2018-01-05 15.121562018-01-05326.99231 2018-01-06 15.12231 2018-01-07 15.12231 2018-01-0899.991562018-01-061569.29 Остаток на каждый день текущего года И вторая: idtransdateudep dperiod ...1562017-11-300 56 ...231 2018-01-05112 ... Задача заключается в том, чтобы соединить эти таблицы по датам и ид, однако в первой есть даты только за текущий год, а во второй выборочно за ~10 лет. Каким способом можно соотнести записи (и можно ли?), чтобы был результат вида: idtransdateudep dperiod1562018-01-020 561562018-01-030 561562018-01-040 56231 2018-01-04 nullnull231 2018-01-05 1121562018-01-050 56231 2018-01-06 112231 2018-01-07 112231 2018-01-081121562018-01-060 56 Периоды везде плавают, закономерности нет, разброс большой, чтобы можно было взять просто смещение. Как можно сделать, кто сталкивался или знает как решить сию проблему, не могли бы посоветовать. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 10:16 |
|
||
|
Джойн различных диапазонов дат
|
|||
|---|---|---|---|
|
#18+
Eneimor, Постановка задачи - 2 Подогнал под ответ: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 11:10 |
|
||
|
Джойн различных диапазонов дат
|
|||
|---|---|---|---|
|
#18+
Eneimor, Сам селект неправильный он только показывает направление мысли ... такое же туманное как и описание задачи А какой Oracle? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 11:30 |
|
||
|
Джойн различных диапазонов дат
|
|||
|---|---|---|---|
|
#18+
MaximaXXL, Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production Описание задачи, если вдаваться в большие подробности, выглядит так, есть таблица фактов, где хранятся операции начисления и списания по договорам, счетам и т.д. с 2001 года, кажется, может еще раньше. Захотели, чтобы с начала года на каждый день формировался остаток по каждому договору, с учетом периода возникновения задолженности. Был рассчитан остаток на каждый день текущего года и вынесен в отдельную таблицу, в другую периоды возникновения и прочие другие моменты. Но соль в том, что возникновение было не только в этом году, а еще в более ранние годы. Вот и встал вопрос как их сджойнить, потому что больше связи, по сути, нету, а рассчитывать на каждый день за это время слишком уж муторно, т.к. на один год придется вносить ~18 млн. новых записей, что не есть хорошо, да и совсем не нужно. Пробовал просто нарастающим итогом, пробовал через джойны, джойны через смещение, просто аналитические функции, но что-то никак не выходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 11:54 |
|
||
|
Джойн различных диапазонов дат
|
|||
|---|---|---|---|
|
#18+
select id, transdate, null as udep, null as dperiod from t1 union all select id, transdate, udep, dperiod from t2 where trunc(transdate,'Y')=2018 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 11:56 |
|
||
|
Джойн различных диапазонов дат
|
|||
|---|---|---|---|
|
#18+
EneimorКаким способом можно соотнести записи (и можно ли?), чтобы был результат вида: для ид с второй таблицы, заменить в первой таблице amount на dperiod после даты из второй, для предыдущих дат null? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 12:34 |
|
||
|
Джойн различных диапазонов дат
|
|||
|---|---|---|---|
|
#18+
Alibek B., Что-то не слишком помогло..но все равно спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 12:36 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=100&tid=1883428]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
2ms |
| others: | 242ms |
| total: | 369ms |

| 0 / 0 |
