Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Задача  [new]
Arsenti
Member

Откуда:
Сообщений: 16
Помогите чайнику не могу сделать адекватный запрос для решения задачи
вот на что я был способен


SELECT max(personid1),personid from id1,id3
where personid1 <= personid
group by personid
order by personid desc

К сообщению приложен файл. Размер - 36Kb
19 июн 14, 12:23    [16188268]     Ответить | Цитировать Сообщить модератору
 Re: Задача  [new]
Arsenti
Member

Откуда:
Сообщений: 16
Вот как это выглядит в MS Managment Studio

К сообщению приложен файл. Размер - 129Kb
19 июн 14, 12:26    [16188299]     Ответить | Цитировать Сообщить модератору
 Re: Задача  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Arsenti,

Вы бы лучше вместо скринов выполнили рекомендации
19 июн 14, 12:35    [16188361]     Ответить | Цитировать Сообщить модератору
 Re: Задача  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
это пятиклассник писал?
19 июн 14, 12:46    [16188482]     Ответить | Цитировать Сообщить модератору
 Re: Задача  [new]
Arsenti
Member

Откуда:
Сообщений: 16
русский не мой родной язык
19 июн 14, 13:08    [16188683]     Ответить | Цитировать Сообщить модератору
 Re: Задача  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8826
Таблицу с кодами надо преобразовать запросом так, чтобы она имела вторую колонку - конец диапазона. В этом случае задача сведется к поиску попадания в диапазон.
1000 - 1999
2000 - 2999

следующее значение можно получить при помощи LEAD, например.
19 июн 14, 13:27    [16188861]     Ответить | Цитировать Сообщить модератору
 Re: Задача  [new]
Arsenti
Member

Откуда:
Сообщений: 16
я не владею данным диапазоном ид изменяться при введение новой информации в данный фа и бук код
Владислав Колосов,
19 июн 14, 13:45    [16189026]     Ответить | Цитировать Сообщить модератору
 Re: Задача  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8826
Постройте запрос, который Book Code превратит из списка в одну колонку в списков из двух колонок и ищете ID между колонками.
Было:
book code
ID
100
200
300

получили запросом :
[book code new] (которое на самом деле запрос, а не таблица)
ID1 ID2
100 199
200 299
300 399

ищем из FA CODE.
Дано условие: [FA CODE].[ID] = 2
SELECT [book code new].ID1, [FA CODE].[ДАТА] FROM [book code new] join [FA CODE] WHERE [FA CODE].[ID] BETWEEN ID1 AND ID2 AND [FA CODE].[ID] = 2

Подумайте - как можно получить таблицу диапазонов, например, используя LEAD или автообъединение.
19 июн 14, 15:53    [16190297]     Ответить | Цитировать Сообщить модератору
 Re: Задача  [new]
Arsenti
Member

Откуда:
Сообщений: 16
Спасибо, буду старасться.Владислав Колосов,
19 июн 14, 17:27    [16191101]     Ответить | Цитировать Сообщить модератору
 Re: Задача  [new]
west74
Member

Откуда: Челябинск
Сообщений: 76
обычная задача под APPLY как кажется



begin
declare @t1 table
(
FA_code int,
book_code int,
id int,
regdate date
);

declare @t2 table
(
FA_code int,
book_code int,
id int,
[status] varchar(20)
);

declare @t3 table
(
FA_code int,
book_code int,
id int
);

insert into @t1 (FA_code,book_code,id,regdate) values (1,2,7840,getdate());
insert into @t2 (FA_code,book_code,id,[status]) values (1,2,7840,'Processing');
insert into @t3 (FA_code,book_code,id) values (1,2,1000);
insert into @t3 (FA_code,book_code,id) values (1,2,2000);
insert into @t3 (FA_code,book_code,id) values (1,2,5000);
insert into @t3 (FA_code,book_code,id) values (1,2,8000);



select A.*,B.* from
(select A.*,B.[status] from @t1 A,@t2 B
where A.FA_code=B.FA_code and A.book_code=B.book_code and A.id=B.id ) A
cross apply (select top 1 id from @t3 C where C.id<A.id order by id desc) B;
end;
23 июн 14, 08:53    [16204631]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить