2016-11-15 64 views
0

我有一個像下面如何查詢表以獲取記錄的序列或鏈?

TaskDel3gation

用戶可以將任務分配給其他用戶的表。其他用戶又可以將他/她的任務分配給另一個用戶等等。

用戶分配任務將由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

Çd

....

....

我使用的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

首先,更正您的標記。 PLSQL是ORACLE的,而不是DB2。 – FDavidov

+0

已更新。但是我在IBM看到一些關於plsql的文檔。 –

+0

PL SQL中使用DB2太^^ http://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.apdv.plsql.doc/doc/c0053607.html – Esperento57

回答

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 
+0

我需要它爲指定的用戶ID。再次更新我的文章。 –