我正在嘗試編寫一條用於構建Oracle報告的普通SQL語句,但我在某些時候被卡住了。 x_request表存儲了所做的請求,並且與已完成的特定請求相關的不同任務存儲在x_request_work_log中。總結這些表的結構:如何根據不同的標準從同一表的不同行中檢索數據
X_request
-id
-name
-requester
-request_date
x_request_work_log
-id
-request_id (foreign key)
-taskId
-start_date
-end_date
現在讓我們假設如下,這些表都充滿了樣本數據:
x_request
id name requester request_date
1 firstReq John 01/01/2012
2 secondReq Steve 21/01/2012
x_request_work_log
id requestId taskId startDate endDate
1 1 0 01/01/2012 03/01/2012
2 1 1 04/01/2012 04/01/2012
3 1 2 05/01/2012 15/01/2012
4 2 0 24/01/2012 02/02/2012
我的報告模板如下:
requestName timeSpent(task(0)) timeSpent(task(1)) timeSpent(task(2))
| | | | | | | |
所以,這就是我卡住了。我需要一個Sql Select語句,它將按照上述格式化方式返回每一行。我如何檢索並顯示不同任務的開始和結束日期。順便說一句timeSpent =結束日期(任務(X)) - 的startDate(任務(X))
注:使用不同的選擇子查詢每個花費的時間計算不因爲性能限制的選項。必須有另一種方式。
取決於哪個版本的Oracle,但是您要查找的是查詢數據透視表。 –
@Korhan Ozturk - 0,1和2是硬編碼值嗎?或者他們可以是任何三個taskId值?或者他們可以超過三個taskId值? –
@JustinCave taskIds引用'Tasks'表中的'id'字段。我在編輯這個問題。 –