Я пытаюсь сделать оператор SELECT для следующей ситуации, и мне нужна помощь, чтобы сделать этот оператор SELECT. Это SQL Server 2005.
Когда выполняется оператор select, он должен возвращать строки с SentDate как NULL, при условии, что в таблице нет повторяющихся PersonID. Он вернет набор результатов со статусом «Начальная запись» (так как тот же идентификатор человека еще не был отправлен). После экспорта данных SentDate будет иметь сегодняшнюю дату.
Теперь предположим, что две новые строки были добавлены, а PersonID дублирован. Поэтому, когда оператор выполняется, он должен возвращать только недавно добавленные две записи, но иметь статус «Последующая запись», потому что этот же человек был экспортирован в предыдущем задании экспорта.
Вот пример того, что ожидается:
Исходное состояние таблицы будет:
RecordId PersonId SentDate CreatedDate
1 1 NULL 8/8/2010
2 2 NULL 8/8/2010
3 3 NULL 8/8/2010
При первом запуске он должен вернуть следующий набор результатов:
RecordId PersonId RecordStatus
1 1 «Начальная запись»
2 2 'Начальная запись'
3 3 'Начальная запись'
Теперь состояние таблицы будет:
RecordId PersonId SentDate CreatedDate
1 1 8/9/2010 8/8/2010
2 2 8/9/2010 8/8/2010
3 3 8/9/2010 8/8/2010
Предположим, позже в таблицу было добавлено новое значение, поэтому значения таблицы будут:
RecordId PersonId SentDate CreatedDate
1 1 8/9/2010 8/8/2010
2 2 8/9/2010 8/8/2010
3 3 8/9/2010 8/8/2010
4 2 NULL 8/8/2010
5 2 NULL 8/8/2010
Теперь этот запрос должен вернуть
RecordId PersonId RecordStatus
4 2 'Follow Record'
5 2 'Follow Record'