powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не поможете ли запросик составить...(+)
4 сообщений из 4, страница 1 из 1
Не поможете ли запросик составить...(+)
    #32066856
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
Не поможете ли запросик составить...(+)
    #32067095
vdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ни кто ни чего не пишет, может задачу непонятно обрисовал. Неужели никто не сталкивался с подобным?
...
Рейтинг: 0 / 0
Не поможете ли запросик составить...(+)
    #32067100
Фотография TBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может никто не хочет связываться с десантниками? :)

Странные здесь какие-то подсчеты, даже и представить трудно, зачем такое может быть нужно, потому и не делал никто ИМХО.
...
Рейтинг: 0 / 0
Не поможете ли запросик составить...(+)
    #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
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не поможете ли запросик составить...(+)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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