Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не поможете ли запросик составить...(+) / 4 сообщений из 4, страница 1 из 1
12.11.2002, 12:13:10
    #32066856
vdv
vdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не поможете ли запросик составить...(+)
Есть две таблицы с данными t1 и t2, в обеих хранятся временные периоды и поле days для каждого периода. Нужно создать результирующую таблицу, в которой будет объединение этих периодов (т.е. если периоды из обеих таблиц как-то пересекаются, то результирующее кол-во периодов увеличивается и для каждого пересечения вычисляется значение поля days равное сумме days периодов из t1 и t2). Хочется сделать это без курсоров, на select:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
drop table t1
drop table t2
drop table t3
CREATE TABLE t1 (id int identity( 1 , 1 ),days int NULL,date_begin datetime NULL,date_end datetime NULL)
INSERT INTO t1 (days,date_begin,date_end) VALUES ( 0 ,'2001-01-01','2001-02-28')
INSERT INTO t1 (days,date_begin,date_end) VALUES ( 5 ,'2001-03-01','2001-05-31')
INSERT INTO t1 (days,date_begin,date_end) VALUES ( 0 ,'2001-06-01','2001-12-31')
CREATE TABLE t2 (id int identity( 1 , 1 ),days int NULL,date_begin datetime NULL,date_end datetime NULL)
INSERT INTO t2 (days,date_begin,date_end) VALUES ( 2 ,'2001-03-15','2001-05-31')
INSERT INTO t2 (days,date_begin,date_end) VALUES ( 0 ,'2001-06-01','2001-08-31')
INSERT INTO t2 (days,date_begin,date_end) VALUES ( 1 ,'2001-09-01','2001-12-31')
 -- t3 - это то что должно получиться
 
CREATE TABLE t3 (id int identity( 1 , 1 ),days int NULL,date_begin datetime NULL,date_end datetime NULL)
INSERT INTO t3 (days,date_begin,date_end) VALUES ( 0 ,'2001-01-01','2001-02-28')
INSERT INTO t3 (days,date_begin,date_end) VALUES ( 5 ,'2001-03-01','2001-03-14')
INSERT INTO t3 (days,date_begin,date_end) VALUES ( 7 ,'2001-03-15','2001-05-31')
INSERT INTO t3 (days,date_begin,date_end) VALUES ( 0 ,'2001-06-01','2001-08-31')
INSERT INTO t3 (days,date_begin,date_end) VALUES ( 1 ,'2001-09-01','2001-12-31')
select * from t1
select * from t2
select * from t3
...
Рейтинг: 0 / 0
12.11.2002, 17:54:24
    #32067095
vdv
vdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не поможете ли запросик составить...(+)
Ни кто ни чего не пишет, может задачу непонятно обрисовал. Неужели никто не сталкивался с подобным?
...
Рейтинг: 0 / 0
12.11.2002, 18:03:24
    #32067100
TBB
TBB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не поможете ли запросик составить...(+)
Может никто не хочет связываться с десантниками? :)

Странные здесь какие-то подсчеты, даже и представить трудно, зачем такое может быть нужно, потому и не делал никто ИМХО.
...
Рейтинг: 0 / 0
12.11.2002, 19:08:07
    #32067141
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не поможете ли запросик составить...(+)
помоему из вот этого можно получить то что ты хочеш....
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE t1 (id int identity( 1 , 1 ),d int NULL,db datetime NULL,de datetime NULL)
INSERT INTO t1 (d,db,de) VALUES ( 0 ,'2001-01-01','2001-02-28')
INSERT INTO t1 (d,db,de) VALUES ( 5 ,'2001-03-01','2001-05-31')
INSERT INTO t1 (d,db,de) VALUES ( 0 ,'2001-06-01','2001-12-31')
CREATE TABLE t2 (id int identity( 1 , 1 ),d int NULL,db datetime NULL,de datetime NULL)
INSERT INTO t2 (d,db,de) VALUES ( 2 ,'2001-03-15','2001-05-31')
INSERT INTO t2 (d,db,de) VALUES ( 0 ,'2001-06-01','2001-08-31')
INSERT INTO t2 (d,db,de) VALUES ( 1 ,'2001-09-01','2001-12-31')
SELECT *
FROM (select  1  t,* from t1 union all select  2  t,* from t2)a
     full join 
     (select  1  t,* from t1 union all select  2  t,* from t2)b
	on a.db between b.db and b.de OR a.de between b.db and b.de OR b.db between a.db and a.de OR b.de between a.db and a.de
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не поможете ли запросик составить...(+) / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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