2017-02-17 3 views
1

у меня есть таблица, которая выглядит следующим образом:Обновление записей в зависимости от пересечения дат

ID | Start | End  | Flag1 | Flag2 
--------------------------------------------  
1 | 1900-01-01 | 1900-01-01 | 0 | 1 
1 | 1900-01-01 | 2000-01-01 | 1 | 0 
2 | 2010-01-01 | 2020-01-01 | 0 | 0 

Для любого диапазона дат идентификатора, флаги 1 и 2 могут быть установлены в 1 или 0. Для первого запись, он только флаг2. Для второй записи он только флаг1.

Есть ли способ обновить записи таким образом, чтобы флаги были равны 1 на пересечении дат начала и окончания? По существу:

ID | Start | End  | Flag1 | Flag2 
--------------------------------------------  
1 | 1900-01-01 | 1900-01-01 | 1 | 1 
1 | 1900-01-02 | 2000-01-01 | 1 | 0 
2 | 2010-01-01 | 2020-01-01 | 0 | 0 

Я попытался использовать группу, но не возвратил результирующий набор, как ожидалось. Любая помощь будет оценена по достоинству. Большое спасибо!

+0

BTW, насколько ваш столбец идентификатора имеет повторяющиеся значения? – AHBagheri

+0

О, этот идентификатор не является ключом, поэтому он может быть дублирован. – pauloutboy

+0

Полезен ли следующий ответ? Если да, проголосуйте, пожалуйста. – AHBagheri

ответ

1

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

UPDATE t1 
SET t1.Flag1 = 1, t1.Flag2 = 1 
FROM 
mytable t1 join mytable t2 on t1.ID = t2.ID 
WHERE t1.Start_Date = t2.End_Date 
1

Почему бы и нет?

UPDATE [mytable] SET [flag1] = 1, [flag2] = 1 WHERE [startdate] = [enddate] 
Смежные вопросы