我有一个父表CASES
和子表UPDATES
。每日例行程序将每一行记录CASES
到UPDATES
表中。这意味着每个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
上述内容并使用它来返回所需的结果表?