購入データを使用して3年間にわたってドラッグカバレッジをマップしようとしています。カバレッジは、1ヶ月に利用可能な少なくとも1つの用量を有すると考えられる。例:私は、次のフィールドとベーステーブルを構築してきたとの例では、これだったSQL Serverテーブル全体を反復し、列間の値を再配布します
PatientID PurchaseMonth Doses DrugType Month1 Month2 Month3 ... Month36
1234 1 2 NSAID 1 1 0 0
1234 1 1 NSAID 0 1 0 0
値Iが11
通じヶ月6用のカバーとみなされる月6における薬物Aの6つの用量を買いますその後、与えられた患者はわずか1用量/月を必要とするので、各患者
Patient DrugType Month1 Month2 Month3 ... Month36
1234 NSAID 1 2 0 0
ためDrugTypeカバレッジのビューを取得するためにロールアップし、将来の任意の時点で、余分な投与量を自由に使用する、は私がしたいと思います1以上の任意の値を次に利用可能な「空の」月。本質的に各月の列を繰り返し、1を超える用量を服用し、その値を0服用で将来の月に分配する(後方に分布することはできない、例えばmonth2 - > month1)。
期待される結果:
Patient DrugType Month1 Month2 Month3 ... Month36
1234 NSAID 1 1 1 0
空の数ヶ月は、私はのは「銀行のことを呼ぶことにしましょう、保持列に残留用量を追加したい場合は存在しません。
私の人生にとって、私はSQLでこれに取り組む方法を理解できません。私はSQL Server上でこれを実行しています。 WhileとIf/Then節を見てきましたが、この状況にそれらを適用する方法は見当たりません。