ID Level Effective Date ExpirationDate
000012-12 2 12/01/2005 NULL
000012-12 1 12/01/2005 NULL
000012-12 2 12/01/2005 01/01/2009
000012-A12 2 10/01/1994 11/30/2005
000012-A12 2 01/01/1999 11/30/2005
000012-A12 2 09/01/2001 11/30/2005
000012-A12 1 12/01/2005 12/31/2007
Будут извлечены только самые последние записи. Это означает, что в приведенном выше сценарии
Exp date — если null
, запись все еще активна.
Если больше, чем текущая отметка времени, ее будущая дата exp , что означает, что она все еще активна.
Если меньше, чем текущая отметка времени, затем прекращена.
Самая последняя — это самая активная или последняя прекращенная запись. Если он был активен и завершен, то будет отображаться только активный. Остальное последняя прекращенная запись.
Один идентификатор может иметь 2 строки для одной и той же даты вступления в силу и даты истечения срока действия, но нескольких уровней. Таким образом, в этом случае нам нужно будет выбрать только 1 запись для первого уровня.
Таким образом, в соответствии с приведенным выше набором данных ниже предполагаемый результат
Выход
000012-12 1 12/01/2005 NULL
000012-A12 2 12/01/2005 01/01/2009
Пожалуйста помоги
Томас. Пожалуйста, ознакомьтесь со следующим набором данных.
Insert #Test( Id, Level, EffectiveDate, ExpirationDate ) Values ('000872-A24',1,'1994-10-01',NULL);
Insert #Test( Id, Level, EffectiveDate, ExpirationDate ) Values ('000872-A24',1,'1999-01-01',NULL);
Insert #Test( Id, Level, EffectiveDate, ExpirationDate ) Values ('000872-A24',2,'2001-09-01',NULL );
Insert #Test( Id, Level, EffectiveDate, ExpirationDate ) Values ('000872-A24',1,'2003-01-01','2007-12-31');
Когда вы запускаете запрос, он должен дать
000872-A24 2 01.09.2001 НОЛЬ
но теперь он возвращается
000872-A24 1 01/01/2003 12/31/2007