Здравствуйте, Darkman_VLT, Вы писали:
H>>H>>select t1.host_id, t1.created as created_on, min( t2.created ) as created_off
H>>from t t1 left join t t2
H>>on t2.host_id = t1.host_id
H>>and t2.created > t1.created
H>>where
H>>t1.event_id = 1
H>>and isnull( t2.event_id, 2 ) = 2
H>>group by
H>>t1.host_id, t1.created
H>>
D_V>>>P.S. SQL в реализации Postgres'a
D_V>А ещё более не понятна конструкция isnull( t2.event_id, 2 ) = 2
Это означает, что если t2.event_id будет NULL, то вместо него подставить 2 и сравниться с 2. Т.о. здесь приводиться t2.event_id к 2 ибо значения могут быть числовыми (0, 1, 2, ...100,...) и NULL и пожтому с NULL сравнивать не получиться. Значит надо привести NULL к числу, которое нам необходимо. В Oracle isnull имеет синоним NVL.