我有一张如下表格
用户可以将任务分配给其他用户。其他用户可以将他/她的任务分配给其他用户,依此类推。
用户分配任务将由TASK_ASSIGN_USERID识别,接收任务的用户将由TASK_RCV_USERID识别。
用户可以在EFFECTIVE_DATE和EXPIRATION_DATE指定的特定时间段内将任务分配给他人。
如果其他用户已在指定的持续时间内完成任务,则用户无法将任务分配给其他用户。
当前日期之后的任务/记录被视为非活动/已完成的任务。
我想查询表以获取给定TASK_ASSIGN_USERID的当前活动任务。查询应该返回所请求的TASK_ASSIGN_USERID的记录,如果TASK_RCV_USERID将任务分配给其他人,则记录另一个记录。反过来,如果TASK_RCV_USERID分配给另一个用户,它应该返回另一个记录,依此类推。
样品
TASK_ASSIGN_USERID TASK_RCV_USERID
A B
B C
C D
D E
...
...
我正在使用db2数据库。谁能帮帮我吗?目前我在我的代码中使用for循环来检索所有记录。
如果使用SQL无法完成,那么我想使用pl / SQL。
有人可以帮助我吗?
更新:
TASK_ASSIGN_USERID | TASK_RCV_USER_ID | EFFECTIVE_DATE | EXPIRATION_DATE
A | B | 10-11-2016 | 17-11-2016
B | C | 11-11-2016 | 16-11-2016
A | B | 12-11-2016 | 20-11-2016
B | C | 15-11-2016 | 18-11-2016
C | D | 15-11-2016 | 18-11-2016
当TASK_ASSIGN_USERID = A
时,应该在下面给我TASK_ASSIGN_USERID | TASK_RCV_USER_ID | EFFECTIVE_DATE | EXPIRATION_DATE
A | B | 12-11-2016 | 20-11-2016
B | C | 15-11-2016 | 18-11-2016
C | D | 15-11-2016 | 18-11-2016
当TASK_ASSIGN_USERID = B
时,应该在下面给我TASK_ASSIGN_USERID | TASK_RCV_USER_ID | EFFECTIVE_DATE | EXPIRATION_DATE
B | C | 15-11-2016 | 18-11-2016
C | D | 15-11-2016 | 18-11-2016
当TASK_ASSIGN_USERID = C
时,应该在下面给我TASK_ASSIGN_USERID | TASK_RCV_USER_ID | EFFECTIVE_DATE | EXPIRATION_DATE
C | D | 15-11-2016 | 18-11-2016
答案 0 :(得分:0)
这样的东西?
select TASK_ASSIGN_USERID,TASK_RCV_USER_ID, max( EFFECTIVE_DATE) as EFFECTIVE_DATE, max (EXPIRATION_DATE) as EXPIRATION_DATE
from youtable
group by TASK_ASSIGN_USERID,TASK_RCV_USER_ID