Это моя текущая структура таблицы (MS SQL 10):Как сравнить datetime NextRow с CurrentRow в SQL и найти разницу в Х количество дней?
CaseNo EntryDate Comment
0000000001 2013-10-10 12:00:00.000 This is a test comment
0000000001 2013-10-21 18:00:00.000 This is a test comment
0000000002 2013-10-10 12:00:00.000 This is a test comment
0000000003 2013-11-07 12:00:00.000 This is a test comment
0000000003 2013-12-01 02:00:00.000 This is a test comment
0000000003 2013-12-01 09:00:00.000 This is a test comment
0000000004 2013-10-10 12:00:00.000 This is a test comment
Ожидаемый результат:
CaseNo
0000000001
0000000003
То, что я ищу, чтобы получить список CaseNos где активность (комментарий) между датами входа составляет более 7 дней (достаточно одного экземпляра).
Это где я в настоящее время (взято из Date Difference between consecutive rows):
SELECT T1.CaseNo,
T1.Operator,
T1.EntryDate,
MIN(T2.EntryDate) AS NextDate,
DATEDIFF("D", T1.EntryDate, MIN(T2.EntryDate)) AS DaysDiff
FROM CaseCorrespondence T1
LEFT JOIN Cases T2
ON T1.CaseNo = T2.CaseNo
AND T2.EntryDate > T1.EntryDate
GROUP BY T1.CaseNo, T1.Operator, T1.EntryDate
ORDER BY T1.CaseNo;
Проблема с этим запросом является то, что я не в настоящее время вычисления где T1.EntryDate старше х дней. Столбец DaysDiff сообщит мне, сколько дней существует между строками, но я не могу добавить предложение WHERE, чтобы указать> 7 дней. (WHERE DaysDiff> 7), например
Поскольку вы сравниваете даты, было бы полезно узнать, какую базу данных вы используете. – FutbolFan
Похоже, что вы используете 'SQL Server 2008', так что, к сожалению, вы не сможете воспользоваться новыми аналитическими функциями, такими как' Lead' и 'Lag', которые были введены в' SQL Server 2012'. Но вместо этого вы можете использовать 'row_number', чтобы делать то, что вам нужно. – FutbolFan