powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как найти в истории значение которые было после определенной даты
5 сообщений из 5, страница 1 из 1
Как найти в истории значение которые было после определенной даты
    #39591238
gni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gni
Гость
Привет,

название в теме не совсем точно описывает суть проблемы.
А суть такова:
имеется одна таблица договор в которой поля: DateOfSign, WhoSign
потом вторая таблица история лицензии с полями: DateOfChanges, State

Первая таблица ясна. А вторая может иметь следующую структуру:
1.1.2017 - 1
1.2.2017 - 2
1.3.2017 - 3
1.4.2017 - 1
1.5.2017 - 3
1.6.2017 - 2
1.7.2017 - 4

Проблема в следующем: как мне узнать, если договор был подписан в ТО время, когда состояние лицензии было 3?
Например, договор был подписан 22.3.2017. Из таблицы видно, что состояние лицензии было 3 (и только в апреле стало 1). То что нужно чтоб вернуло. (Заходя чуть глубже, скажу, что пусть 3 это состояние лицензии когда ты не имеешь права подписывать договора). Вот и надо узнать, если чел подписал тогда когда на то не имел право.
Пробовал конструкцию типа
WHERE dateOfSign<= max(DateOfChanges) and State = 3
но такая запись вернет в max(DateOfChanges) = 1.5.2017

Читая потом заметил, что может оконными функциями такое возможно, но к моему сожалению я в них не разобрался.
Может кто поможет как решить проблему ?

Спасибо
...
Рейтинг: 0 / 0
Как найти в истории значение которые было после определенной даты
    #39591297
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
select * 
   from [таблица договор] as t 
           cross apply ( select * 
                                 from [таблица история лицензии] as x 
                                 where x.DateOfChanges <= t.DateOfSign order by x.DateOfChanges desc 
                            ) as x
   where x.State = 3
...
Рейтинг: 0 / 0
Как найти в истории значение которые было после определенной даты
    #39591301
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон
Код: sql
1.
2.
3.
4.
5.
6.
7.
select * 
   from [таблица договор] as t 
           cross apply ( select top(1) * 
                                 from [таблица история лицензии] as x 
                                 where x.DateOfChanges <= t.DateOfSign order by x.DateOfChanges desc 
                            ) as x
   where x.State = 3
...
Рейтинг: 0 / 0
Как найти в истории значение которые было после определенной даты
    #39591395
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gni,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
declare @licenses table ( ChangeDate date, Status int)
insert into @licenses
values ('01.01.2017',1),
('01.02.2017',2),
('01.03.2017',3),
('01.04.2017',1),
('01.05.2017',3),
('01.06.2017',2),
('01.07.2017',4);

With
Periods as (
Select *,lag(ChangeDate) over (order by ChangeDate) as PrevStatusDate From @licenses 
)
Select * From Periods Where Status = 3
...
Рейтинг: 0 / 0
Как найти в истории значение которые было после определенной даты
    #39591403
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kopellygni,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
declare @licenses table ( ChangeDate date, Status int)
insert into @licenses
values ('01.01.2017',1),
('01.02.2017',2),
('01.03.2017',3),
('01.04.2017',1),
('01.05.2017',3),
('01.06.2017',2),
('01.07.2017',4);

With
Periods as (
Select *,lag(ChangeDate) over (order by ChangeDate) as PrevStatusDate From @licenses 
)
Select * From Periods Where Status = 3



Красноярские мужики настолько суровы, что обходятся без лишних таблиц.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как найти в истории значение которые было после определенной даты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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