我有一个父表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
排序第二,等等。
我需要一个返回如下表格的查询 -
QUERY-RETURNED TABLE
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
有4个UPDATES
且CASE 789
只有2个UPDATES
,那么所需的查询将返回 - < / p>
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
并使用它来返回所需的结果表?