![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ПЕРЕСЕЧЕНИЕ не СВЯЗАННЫХ ТАБЛИЦ [D5, D6, D7]
anat © (2005-01-27 13:36:00)Есть таблица T1 с полями
Dt_Beg Date
dt_End Date
Value Number — определяет некое значение
Есть таблица T2 c полями
D_BEG Date
D_END Date
Необходимо
По каждой записи из T2
вывести
T2.D_Beg,T2.DEnd,T1.VALUE,DtIntersectBeg,DtIntersectEnd
где DtIntersectBeg и DtIntersectBeg пересечения (по датам) T1 и T2
Ольга (2005-01-28 08:42:00) [1]select b.dbeg, b.dend,a.val,
CASE WHEN a.dbeg<b.dbeg THEN b.dbeg ELSE a.dbeg END as D1,
CASE WHEN a.dend<b.dend THEN a.dend ELSE b.dend END as D2
from t2 b left join t1 a on
((a.dbeg between b.dbeg and b.dend) or
(a.dend between b.dbeg and b.dend)) or
(a.dbeg<b.dbeg and a.dend>b.dend)
Возможно в CASE есть небольшой косячок, надо аккуратно проверить (а лень).
Почему у вас в результат не попали записи из Т1 (1 запись) в февраль-март-апрель?
Это вы ошиблись или я неправильно поняла условия?
anat (2005-01-27 13:58:00) [2]T1
Dt_Beg Dt_end Value
05.01.2004 01.10.2004 1
11.02.2004 01.10.2004 2
11.01.2004 15.01.2004 4
T2
D_Beg D_End
01.01.2004 31.01.2004
01.02.2004 29.02.2004
01.03.2004 31.03.2004
01.04.2004 30.04.2004
Нужен результат
T2.D_BEG T2,D_END T1.V DtInterBeg DtInterEnd
01.01.2004 31.01.2004 1 01.01.2004 31.01.2004
01.01.2004 31.01.2004 4 11.01.2004 15.01.2004
01.02.2004 29.02.2004 2 11.02.2004 29.02.2004
01.03.2004 31.03.2004 2 01.03.2004 31.03.2004
01.04.2004 30.04.2004 2 01.04.2004 30.04.2004
Sergey13 (2005-01-27 13:42:00) [3]>где DtIntersectBeg и DtIntersectBeg пересечения (по датам) T1 и T2
Проилюстрируй примером, плиз.