powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / T-SQL
4 сообщений из 4, страница 1 из 1
T-SQL
    #32015162
Фёдоров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые знатоки!
Имеем SQL Server 2000 и 2 таблицы:

CREATE TABLE MAIN_TABLE
(record_id int PRIMARY KEY,sol_number varchar(7) NOT NULL)
INSERT INTO MAIN_TABLE VALUES (1, 681)
INSERT INTO MAIN_TABLE VALUES (2, 709)
INSERT INTO MAIN_TABLE VALUES (3, 715)
INSERT INTO MAIN_TABLE VALUES (4, 716)

CREATE TABLE DROPS
(drop_id int PRIMARY KEY ,
rec_id int NOT NULL REFERENCES MAIN_TABLE(record_id),
drop_name varchar(5) NULL,
drop_date smalldatetime NULL)
INSERT INTO DROPS VALUES (2000,1,'A','10/10/97')
INSERT INTO DROPS VALUES (3001,1,NULL,'7/31/97')
INSERT INTO DROPS VALUES (1999,1,'B','8/3/99')
INSERT INTO DROPS VALUES (1499,2,NULL,NULL)
INSERT INTO DROPS VALUES (1500,2,'A','1/1/2001')
INSERT INTO DROPS VALUES (2005,2,'B','1/1/2001')
INSERT INTO DROPS VALUES (1200,3,'A',NULL)
INSERT INTO DROPS VALUES (2050,3,'B','7/1/97')
INSERT INTO DROPS VALUES (2007,3,'B','7/31/97')
INSERT INTO DROPS VALUES (2008,4,NULL,NULL)

Помогите, пожалуйста, выбрать record_id, sol_number, drop_id, соответствующие наименьшей дате в поле drop_date. Значение NULL в запрос не включаем. Если полю record_id соответствуют несколько drop_id с одинаковой drop_date, выбираем наименьшую drop_id. Результат должен выглядеть так(поля разделены ";" - таблица не получатся):

record_id;sol_number;drop_id;min_drop_date
1; 681;3001;7/31/97
2; 709;1500;1/1/01
3; 715;2050;7/1/97

Надеюсь, изложил понятно. Спасибо.
...
Рейтинг: 0 / 0
T-SQL
    #32015166
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-- на будующее - приводите примеры на временных таблицах, их не жалко
CREATE TABLE #MAIN_TABLE
(record_id int PRIMARY KEY,sol_number varchar(7) NOT NULL)
INSERT INTO #MAIN_TABLE VALUES (1, 681)
INSERT INTO #MAIN_TABLE VALUES (2, 709)
INSERT INTO #MAIN_TABLE VALUES (3, 715)
INSERT INTO #MAIN_TABLE VALUES (4, 716)

CREATE TABLE #DROPS
(drop_id int PRIMARY KEY ,
rec_id int ,
drop_name varchar(5) NULL,
drop_date smalldatetime NULL)
INSERT INTO #DROPS VALUES (2000,1,'A','10/10/97')
INSERT INTO #DROPS VALUES (3001,1,NULL,'7/31/97')
INSERT INTO #DROPS VALUES (1999,1,'B','8/3/99')
INSERT INTO #DROPS VALUES (1499,2,NULL,NULL)
INSERT INTO #DROPS VALUES (1500,2,'A','1/1/2001')
INSERT INTO #DROPS VALUES (2005,2,'B','1/1/2001')
INSERT INTO #DROPS VALUES (1200,3,'A',NULL)
INSERT INTO #DROPS VALUES (2050,3,'B','7/1/97')
INSERT INTO #DROPS VALUES (2007,3,'B','7/31/97')
INSERT INTO #DROPS VALUES (2008,4,NULL,NULL)

select * from #MAIN_TABLE
select * from #DROPS

-- сам запрос:
select m.record_id,sol_number,drop_id,drop_date
from #DROPS d, #MAIN_TABLE m
where m.record_id=d.rec_id and
drop_id=(select top 1 drop_id from #DROPS d2
where d.rec_id=d2.rec_id and drop_date is not null
order by drop_date,drop_id)
order by m.record_id
...
Рейтинг: 0 / 0
T-SQL
    #32015170
Фёдоров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
...
Рейтинг: 0 / 0
T-SQL
    #32015217
Фёдоров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При 2000 записей в MAIN_TABLE и 3000 в DROPS запрос длится 45 секунд...
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / T-SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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