0

我有一个父表CASES和子表UPDATES。每日例行程序将每一行记录CASESUPDATES表中。这意味着每个CASE都有一个,然后是多个UPDATES

案例

CaseID  | CaseStatus | [other fields]
==============================================
PK(int) | Free text  | Free text...

更新

UpdateID | UpdateDate   | CaseID  | CaseStatus | [other fields]
==============================================
PK(int)  | Date Entered | FK(int) | Free text  | Free text...

对于这种情况,您可以假设CASES可以创建但不能删除。

我需要UPDATES按时间倒序对表中的数据进行排序,以便所有最近UPDATES的数据首先排序,然后是最近的第二个UPDATES排序,依此类推。

我需要一个返回如下表的查询 -

查询返回表

SeqNo          | UpdateID | UpdateDate | CaseID | CaseStatus | [other fields]
=================================================================================
Calc'd (below) | [fields returned from UPDATES table]

SeqNo字段将以某种方式计算为-

(select CaseID, count(UpdateDate) as Total from UPDATES group by CaseID) -
(select Row_Number over (order by UpdateDate) as Step from UPDATES group by CaseID) +
1

因此,如果我们有两个CASES,并且CASE 345有 4UPDATES并且CASE 789只有 2 UPDATES,那么所需的查询将返回 -

SeqNo | UpdateID | UpdateDate  | CaseID | CaseStatus | [other fields]
====================================================================
1     | 9876     | 30-Jun-2013 | 345    | [free text...]
1     | 9875     | 30-Jun-2013 | 789    | [free text...]
2     | 9765     | 29-Jun-2013 | 345    | [free text...]
2     | 9764     | 29-Jun-2013 | 789    | [free text...]
3     | 9654     | 28-Jun-2013 | 345    | [free text...]
4     | 9653     | 27-Jun-2013 | 345    | [free text...]

问题- 我将如何计算SeqNo上述内容并使用它来返回所需的结果表?

4

0 回答 0