每个用户的出入境记录我有以下表如何选择从同一个表
R_ID DATE Col_A Col_B Col_C
158 20161008 01 99 99
158 20161012 01 01 99
158 20161019 01 02 10
158 20161022 99 01 10
160 20161006 01 99 01
160 20161011 99 01 99
160 20161017 99 01 10
167 20161013 99 01 01
167 20161016 99 02 99
167 20161020 02 01 10
我想在这里是选择这样的,我得到以下结果
R_ID DATE Col_A Col_B Col_C
158 20161008 01 01 99 - Entry record
158 20161022 99 01 10 - Exit Record
160 20161006 01 99 01 - Entry record
160 20161017 99 01 10 - Exit Record
167 20161013 99 01 01 - Entry record
167 20161020 02 01 10 - Exit Record
For each R_ID:
When Col_A or Col_B = '01' and Col_C <>'10' - **It is an entry record**
When Col_C = '10' - **It is an exit record**
逻辑
1. Select the earliest entry record
**and**
2. Select the latest exit record for each R_ID
我想利用工会类似下面的...
Select * from tbl1 T
where
T.Col_C = '10' and
T.DATE = (select max(T2.DATE) from tbl1 T2
where
T2.Col_C = '10' and
T3.R_ID = T.R_ID
)
union
Select * from tbl1 K
where
(K.Col_A = '01' or K.Col_B = '01') and
K.Col_C <> '10' and
K.DATE = (select min(K2.DATE) from tbl1 K2 where
(K2.Col_A = '01' or K2.Col_B = '01') and
K2.Col_C <> '10' and
K2.R_ID = K.R_ID
)
但是像我这样在同一张桌子上用自联接做的联合正在给我返回一个垃圾数据。
这可以通过连接来实现吗?