「なぜ」を省略して「何か」と「方法」に固執すれば、はるかに簡単になります。 特定の時点でのレコード状態のテンポラルテーブルを照会できるようにする必要があります。これは正当な構文であり、正確には私の後のことです。 この場合、Spineテーブルには、目的のDATETIME値のリストが含まれています。時間表 - 「パラメータ化」拡張SYSTEM_TIME構文
これは単に正しい構文を使用しないという問題ですか、それとも制限ですか? ダイナミックSQLに加えて、私は試してみることができる他の提案がありますか?
ありがとうございます!
これは、あなたが何の対応する行がPersonTemporalTable
に存在しない場合でもSpine
行を返すようにしたい場合は、outer apply()
に切り替え@SQLZim
SELECT *
FROM Spine SP
JOIN PetTemporal FOR SYSTEM_TIME ALL PT ON SP.SpineDT >= PT.ValidFrom AND SP.SpineDT < PT.ValidTo
JOIN PersonTemporal FOR SYSTEM_TIME ALL PS ON SP.SpineDT >= PS.ValidFrom AND SP.SpineDT < PS.ValidTo
AND PS.PersonID = PT.PersonID
そうですね。 WHERE句でこれを解決できます。 – MarkD
@ MarkD私が指定した構文を使用する別のオプションを追加しました。 – SqlZim
良いアイディア - 残念ながら、テーブルごとの関数またはテーブルを引数として取る関数が必要になることを意味します。 ご協力いただきありがとうございます:) – MarkD