0 голосов
спросил от в категории SQLServer
Достижение этого простым запросом будет сложной задачей. Правила не очень ясны. В соответствии с вашими данными дата окончания выглядит одинаково, но дата начала отличается от другой, и вы хотите сохранить только большую дату. Сколько дубликатов будет там? Только два?

В любом случае,
-- you have all same end date with min start date; may be the query is not exactly right according to your final need SELECT ID, EMP_ID, TEAM, [END DATE], MIN([START DATE]) [START DATE] FROM my_table GROUP BY ID, EMP_ID, END_DATE; -- what would happen if start date is same end date is different? let's pick the big date SELECT ID, EMP_ID, [START DATE], MAX(END DATE) FROM  (SELECT ID, EMP_ID, TEAM, [END DATE], MIN([START DATE]) [START DATE] FROM my_table GROUP BY ID, EMP_ID, END_DATE ) a GROUP BY ID, EMP_ID, [START DATE] -- Now we are done with similar end date and similar start date -- At this point I will write a function or take help of another tool, perhaps, Another programming language. 

Пожалуйста, войдите или зарегистрируйтесь чтобы ответить на этот вопрос.

0 голосов
ответил от
Если я понял ваши требования, что-то вроде этого должно работать:
DELETE FROM     D FROM     my_table As D WHERE     Exists     (         SELECT 1         FROM my_table As O         WHERE O.TEAM = D.TEAM         And O.[END DATE] > D.[START DATE]         And          (             O.[START DATE] < D.[START DATE]          Or              -- If tied on start date, keep the one with the earlier ID:             (O.[START DATE] = D.[START DATE] And O.ID < D.ID)         )     ) ;

Категории

Добро пожаловать на сайт DraftingCode Q&A, где вы можете задавать вопросы и получать ответы от других членов сообщества.

Связанных вопросов не найдено

...