2016-10-31 3 views
0

Мне нужна помощь в отображении всех строк, которые имеют разные даты на основе уникального числа в таблице, ниже - это созданная мной фиктивная таблица, которая похожа на ту, Мне нужно проанализировать.SQL-запрос, чтобы показать разницу между несколькими строками

enter image description here

Что мне нужно, чтобы показать это все строки, в которых изменилась ожидаемая дата, но VisitNumber то же самое, я выделил четыре строки в качестве примера;

Первая запись Null
Вторая запись 25/04/16
Тогда последняя запись была 24/06/16

Иногда там может быть запись, где Посещать номер тот же как строка, которая изменилась, но ожидаемые даты совпадают, в этом случае мне нужно игнорировать их строки.

Кроме того, может быть несколько записей с одним и тем же уникальным идентификатором, но номер посещения отличается.

+0

Здесь отличное место, чтобы начать. http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –

+1

Я не понимаю этого: «Иногда может быть запись где номер посещения совпадает с измененной строкой, но ожидаемые даты совпадают, в этом случае мне нужно игнорировать их строки. ". У ваших данных таких случаев нет, поэтому я не следую логике. –

ответ

1

Это должно делать то, что вы хотите:

SELECT UniqueID, VisitNumber, Min(ExpectedDate), Max(ExpectedDate) 
FROM Table 
GROUP BY uniqueID, VisitNumber 
HAVING Min(ExpectedDate) <> Max(ExpectedDate) 
1

Я думаю, что вы можете сделать это с помощью функции окна:

select t.* 
from (select t.*, 
      min(ExpectedDate) over (partition by UniqueId, VisitNumber) as mined, 
      max(ExpectedDate) over (partition by UniqueId, VisitNumber) as maxed 
     from t 
    ) t 
where mined <> maxed and ExpectedDate is not null; 
Смежные вопросы