Помогите написать запрос

Squidward
Дата: 20.12.2011 10:01:19
Здравствуйте.
Есть таблица:
ID USERID DAT BEGIN END
1 1 2011.01 100 120
2 1 2011.02 120 120
3 1 2011.03 130 130
4 1 2011.04 130 130
5 2 2011.01 10 10
6 2 2011.02 10 10
7 2 2011.03 11 12


ID - идентификатор записи
USERID - идентификатор пользователя
DAT - дата (год, месяц)
BEGIN - значение на начало месяца
END - значение на конец месяца

Не могу сообразить, как вывести строки, в которых у конкретного пользователя расходятся значения начала и конца двух смежных периодов. То есть значения записей 2 и 3, 6 и 7 не сходятся между собой.

Заранее спасибо.
mds_world
Дата: 20.12.2011 10:23:50
Не проверял...
select t1.*, t2.*
from Таблица t1 inner join Таблица t2 on t1.USERID=t2.USERID
where datediff("m", datevalue(t1.dat), datevalue(t2.dat))=1 and t2.BEGIN<>t1.END
alvk
Дата: 20.12.2011 10:25:05
Squidward,

Например так:
SELECT T3.ID, T3.USERID, T3.DAT, T3.BEGIN, T3.END, 
DLookUp("end","t3","id =" & [id] & " - 1 and userid = " & [userid] & "") AS B1
FROM T3
WHERE (((DLookUp("end","t3","id =" & [id] & " - 1 and userid = " & [userid] & ""))<>[begin]));
alvk
Дата: 20.12.2011 10:29:47
mds_world,

select t1.*, t2.*

Если красное убрать, то всё в порядке.
Squidward
Дата: 20.12.2011 12:59:16
mds_world, alvk
Огромное спасибо. Модифицировал запрос следующим образом:

SELECT t1.USERID, t1.DAT, t1.END, t2.DAT, t2.BEGIN
FROM Таблица AS t1 INNER JOIN Таблица AS t2 ON t1.USERID=t2.USERID
WHERE datediff("m", datevalue(t1.DAT), datevalue(t2.DAT))=1 and t2.BEGIN<>t1.END
ORDER BY t1.USERID, t1.DAT;