バージョン内で有効だったプロパティを見つけようとしている状況があります。以下にバージョン テーブルとプロパティ テーブルがあります。プロパティ レコードには、導入されたバージョンと削除されたバージョンがあります。
導入されたものと削除されたものの間にあるプロパティを選択しようとしています。ただし、削除されたものはnullであり、結合が混乱します。以下のSQLで(醜い方法で)補償しました。削除された in が null の場合、int の最大値を設定します。これは機能しますが、Removed In が null の場合、結合の 2 番目の条件を無視すると便利です。何かご意見は?
**Version**
id Name
--- -----------------
1 VersionA
2 VersionB
**Property**
id Name IntroducedInVersion RemovedInVersion
--- ----------------- ------------------- -----------------
1 Property1 1 null
2 Property2 1 2
SELECT
p.PropertyName
,p.IntroducedInVersion
,p.RemovedInVersion
FROM
Version v
join Property p on p.IntroducedInVersion <= v.Id
and ISNULL(cp.RemovedInVersion, 2147483647) > v.Id
WHERE
v.Id = 1