我有一个数据表,其中包含一列列表(为了简化本示例而减少到相关的列):
users(
usr_pkey int identity(1, 1) primary key,
usr_name nvarchar(64),
...,
)
accounts(
acc_pkey int identity(1, 1) primary key,
usr_key int foreign_key references users(usr_pkey),
acc_effective datetime,
acc_expires datetime,
acc_active bit,
...,
)
我希望从这个表中获取所有符合以下条件的记录:
- 账户属于指定用户 且
- 在第一种情况下:
- 账户处于激活状态 且 今天的日期在账户的生效日期和到期日期之间 或者
- 在第二种情况下:
- 如果第一种情况没有找到任何记录,则选择最近到期日期的记录。
因此,如果存在一个活动记录,其中今天的日期在账户的生效日期和到期日期之间,我想要那个记录。仅当找不到匹配项时,我才想要该用户的任何具有最近到期日期的账户。