0

親テーブル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 3454UPDATESあり、CASE 7892 しかない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