私はこのようなテーブルをたくさん持っています:
Lookup_HealthCheckupRisks
------------
ID Name
1 Anemia
2 Anorexic
3 Bulemic
4 Depression
...
122 Syphilis
PatientRisksOnCheckup
------------------
ID CheckupID RiskID
1 11 2
2 11 3
3 12 1
4 14 1
5 14 3
...
しかし、私はこのようなフラット化されたバージョンが必要です:
PatientCheckup
------------------
CheckupID Risk_1 Risk_2 Risk_3 Risk_4 .. Risk_122
11 0 1 1 0 0
12 1 0 0 0 0
13 0 0 0 0 0
14 1 0 1 0 0
これを行う方法がわかりません。考えられる最善の方法は、一時テーブルを作成し、122列すべてを定義してから、>_<If Exists ( SELECT * FROM PatientRisksOnCheckup where RiskID=i and checkupID=j ) INSERT INTO PatientCheckup (1) WHERE CheckupID=j
を繰り返し実行することです。i, j...
1つのテーブルに対してこのクエリを作成するのは最善ではありませんが、同じサイズの別の30のテーブルに対してこのようなデータをフラット化する必要があります。えーと…提案してください?
私がしていることが一般的なことであるかどうかも知りたいです...?
統計ソフトウェアのSQLデータを非正規化/フラット化する必要があります。