親テーブルCASES
と子テーブルがありますUPDATES
。日課CASES
は、各行をUPDATES
テーブルに記録します。これは、それぞれCASE
に 1 つと複数の があることを意味します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
最初に並べ、次に 2 番目に新しいものUPDATES
を 2 番目に、というように並べます。
次のようなテーブルを返すクエリが必要です-
クエリが返すテーブル
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
したがって、 2 つ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
--上記を計算し、それを使用して目的の結果テーブルを返すにはどうすればよいですか?