У меня есть список идентификаторов, у каждого идентификатора есть код и дата. Для каждого идентификатора может быть несколько кодов и дат. Мне нужно найти идентификаторы, которые включают только код X и код Y (код в (X, Y)), а также дату старше 540 дней назад (Date <= DATEADD(dd, -540, CURRENT_TIMESTAMP))
.Исключая, когда существует X
Поскольку идентификатор может иметь несколько кодов и дат, мне нужно исключить те идентификаторы, которые не соответствуют моим критериям выше. Ниже приведен пример этого.
ID Code Date
5525 X 2010-10-07
5525 Y 2010-11-25
5525 Y 2010-11-29
5525 Y 2010-10-06
**5525 X 2011-01-14**
**5525 X 2011-01-31**
5525 Y 2010-12-09
5525 Y 2010-10-15
5525 X 2010-10-18
5525 Y 2010-12-08
5525 X 2010-12-09
Поскольку два выделены идентификаторы имеют дату, которая больше, чем -540 дней назад мне нужно исключить все идентификаторы, даже если она соответствует моим первоначальным критериям.
Мне нужно включить идентификаторы, соответствующие моим критериям (code in (X,Y) and Date <= DATEADD(dd, -540, CURRENT_TIMESTAMP))
, но если другой идентификатор того же значения не соответствует этим критериям.
select ID from table
where code in (X,Y)
and date <= DATEADD(dd, -540, CURRENT_TIMESTAMP)
Что вы используете для базы данных? – Exupery
Извините, SQL Server 2012 – user1370407
Спасибо, для дальнейшего использования, включая тег для используемой технологии, очень полезно. – Exupery