2013-08-23 26 views
0

我目前的工作基於存儲在表中最後一個動作日期賬齡分析報告,給出如下表所示:日期帳齡報表+累積式

RequestNo UserCode LastActionDate  ActionType 
REQ1  407  12/14/2012 9:47  Saved 
REQ1  407  12/14/2012 9:48  Submitted 
REQ1  407  12/14/2012 9:48  Approved 
REQ1  203  12/17/2012 9:54  Reviewed 
REQ1  242  12/18/2012 10:29 WF Setup in Dev. 
REQ1  203  12/18/2012 15:14 Transport to prod. 
REQ1  242  12/18/2012 15:16 Completed 
REQ2  407  12/27/2012 10:36 Submitted 
REQ2  456  12/27/2012 11:18 Approved 
REQ2  407  12/27/2012 11:27 Approved 
REQ2  203  12/27/2012 17:34 Reviewed 
REQ2  242  12/28/2012 14:07 WF Setup in Dev. 
REQ2  203  12/28/2012 14:11 Transport to prod. 
REQ2  242  12/28/2012 21:27 Completed 
REQ3  407  12/27/2012 11:32 Submitted 
REQ3  456  12/27/2012 11:33 Approved 
REQ3  407  12/27/2012 11:34 Approved 
REQ3  203  12/27/2012 17:33 Reviewed 
REQ3  242  12/27/2012 18:33 WF Setup in Dev. 
REQ3  203  12/28/2012 13:43 Transport to prod. 
REQ3  242  1/3/2013 14:56  Completed 

我需要生成具有下列列的老化表 RequestNo,用戶代碼,ReceivedDate,LastActionDate,操作類型,老齡化(差異LastActionDate和ReceivedDate)Cummulative.Just像見下表

RequestNo UserCode ReceivedDate  LastActionDate  ActionType   Aging Cummulative 
REQ1  407   12/14/2012 9:47  12/14/2012 9:47  Saved    0  0 
REQ1  407   12/14/2012 9:47  12/14/2012 9:48  Submitted   0  0 
REQ1  407   12/14/2012 9:48  12/14/2012 9:48  Approved   0  0 
REQ1  203   12/14/2012 9:48  12/17/2012 9:54  Reviewed   3  3 
REQ1  242   12/17/2012 9:54  12/18/2012 10:29 WF Setup in Dev. 1  4 
REQ1  203   12/18/2012 10:29 12/18/2012 15:14 Transport to prod. 0  4 
REQ1  242   12/18/2012 15:14 12/18/2012 15:16 Completed   0  4 
REQ2  407   12/27/2012 10:36 12/27/2012 10:36 Submitted   0  0 
REQ2  456   12/27/2012 10:36 12/27/2012 11:18 Approved   0  0 
REQ2  407   12/27/2012 11:18 12/27/2012 11:27 Approved   0  0 
REQ2  203   12/27/2012 11:27 12/27/2012 17:34 Reviewed   0  0 
REQ2  242   12/27/2012 17:34 12/28/2012 14:07 WF Setup in Dev. 1  1 
REQ2  203   12/28/2012 14:07 12/28/2012 14:11 Transport to prod. 0  1 
REQ2  242   12/28/2012 14:11 12/28/2012 21:27 Completed   0  1 
REQ3  407   12/27/2012 11:32 12/27/2012 11:32 Submitted   0  0 
REQ3  456   12/27/2012 11:32 12/27/2012 11:33 Approved   0  0 
REQ3  407   12/27/2012 11:33 12/27/2012 11:34 Approved   0  0 
REQ3  203   12/27/2012 11:34 12/27/2012 17:33 Reviewed   0  0 
REQ3  242   12/27/2012 17:33 12/27/2012 18:33 WF Setup in Dev. 0  0 
REQ3  203   12/27/2012 18:33 12/28/2012 13:43 Transport to prod. 1  1 
REQ3  242   12/28/2012 13:43 1/3/2013 14:56  Completed   6  7 
+1

哪裏'ReceivedDate'從何而來? 「Cummulative」是什麼意思?如果你指出你正在使用什麼樣的RDBMS(SQL * flavor *),你也許會想要添加你自己的腳本嘗試(即使它們不成功)。 –

+0

什麼是RDBMS(SQL Server,MySql,Oracle,.. 。)你使用的是嗎? – peterm

回答

0

您正在尋找這樣的事情?

WITH cte AS 
(
    SELECT * 
    FROM 
    (
    SELECT t.*, ROW_NUMBER() OVER (PARTITION BY RequestNo ORDER BY LastActionDate) rnum 
     FROM Table1 t 
) q 
) 
SELECT c1.RequestNo, c1.usercode, 
     COALESCE(c2.LastActionDate, c1.LastActionDate) ReceivedDate, 
     c1.LastActionDate, c1.ActionType, 
     DATEDIFF(day, COALESCE(c2.LastActionDate, c1.LastActionDate), c1.LastActionDate) Aging 
    FROM cte c1 LEFT JOIN cte c2 
    ON c1.RequestNo = c2.RequestNo 
    AND c1.rnum = c2.rnum + 1 
ORDER BY RequestNo, LastActionDate 

輸出:

 
| REQUESTNO | USERCODE |     RECEIVEDDATE |     LASTACTIONDATE |   ACTIONTYPE | AGING | 
|-----------|----------|---------------------------------|---------------------------------|--------------------|-------| 
|  REQ1 |  407 | December, 14 2012 09:47:00+0000 | December, 14 2012 09:47:00+0000 |    Saved |  0 | 
|  REQ1 |  407 | December, 14 2012 09:47:00+0000 | December, 14 2012 09:48:00+0000 |   Submitted |  0 | 
|  REQ1 |  407 | December, 14 2012 09:48:00+0000 | December, 14 2012 09:48:00+0000 |   Approved |  0 | 
|  REQ1 |  203 | December, 14 2012 09:48:00+0000 | December, 17 2012 09:54:00+0000 |   Reviewed |  3 | 
|  REQ1 |  242 | December, 17 2012 09:54:00+0000 | December, 18 2012 10:29:00+0000 | WF Setup in Dev. |  1 | 
|  REQ1 |  203 | December, 18 2012 10:29:00+0000 | December, 18 2012 15:14:00+0000 | Transport to prod. |  0 | 
|  REQ1 |  242 | December, 18 2012 15:14:00+0000 | December, 18 2012 15:16:00+0000 |   Completed |  0 | 
|  REQ2 |  407 | December, 27 2012 10:36:00+0000 | December, 27 2012 10:36:00+0000 |   Submitted |  0 | 
|  REQ2 |  456 | December, 27 2012 10:36:00+0000 | December, 27 2012 11:18:00+0000 |   Approved |  0 | 
|  REQ2 |  407 | December, 27 2012 11:18:00+0000 | December, 27 2012 11:27:00+0000 |   Approved |  0 | 
|  REQ2 |  203 | December, 27 2012 11:27:00+0000 | December, 27 2012 17:34:00+0000 |   Reviewed |  0 | 
|  REQ2 |  242 | December, 27 2012 17:34:00+0000 | December, 28 2012 14:07:00+0000 | WF Setup in Dev. |  1 | 
|  REQ2 |  203 | December, 28 2012 14:07:00+0000 | December, 28 2012 14:11:00+0000 | Transport to prod. |  0 | 
|  REQ2 |  242 | December, 28 2012 14:11:00+0000 | December, 28 2012 21:27:00+0000 |   Completed |  0 | 
|  REQ3 |  407 | December, 27 2012 11:32:00+0000 | December, 27 2012 11:32:00+0000 |   Submitted |  0 | 
|  REQ3 |  456 | December, 27 2012 11:32:00+0000 | December, 27 2012 11:33:00+0000 |   Approved |  0 | 
|  REQ3 |  407 | December, 27 2012 11:33:00+0000 | December, 27 2012 11:34:00+0000 |   Approved |  0 | 
|  REQ3 |  203 | December, 27 2012 11:34:00+0000 | December, 27 2012 17:33:00+0000 |   Reviewed |  0 | 
|  REQ3 |  242 | December, 27 2012 17:33:00+0000 | December, 27 2012 18:33:00+0000 | WF Setup in Dev. |  0 | 
|  REQ3 |  203 | December, 27 2012 18:33:00+0000 | December, 28 2012 13:43:00+0000 | Transport to prod. |  1 | 
|  REQ3 |  242 | December, 28 2012 13:43:00+0000 | January, 03 2013 14:56:00+0000 |   Completed |  6 | 

這裏是SQLFiddle演示

+0

是的,它有幫助,但需要計算日期之間的差異,然後處理請求的累積日期。 – nigel

+0

查看更新後的答案。「老化」已添加。你能詳細解釋'累計'是應該計算的? – peterm

+0

它將根據requestno計算。例子中REQ1的值將是第一行將是0,那麼下一行將是第一行0加上下一行0,第三行總和的前2行加上第3行,直到它到達REQ1的最後一行。 – nigel