单位 - HMY,SCODE,hProperty过滤复杂的SQL查询
InsurancePolicy - HMY,hUnit,dtEffective,sStatus
Select MAX(i2.dtEffective) as maxdate, u.hMy, MAX(i2.hmy) as InsuranceId,
i2.sStatus
from unit u
left join InsurancePolicy i2 on i2.hUnit = u.hMy
and i2.sStatus in ('Active', 'Cancelled', 'Expired')
where u.hProperty = 2
Group By u.hmy, i2.sStatus
order by u.hmy
这个查询将返回值的保险政策与最新的生效日期( Max(dtEffective)
)。我添加了Max(i2.hmy)
,因此如果最近生效日期有多份保险单,它将返回数据库中具有最高编号(i2.hmy
)的保单。
假设有一个单位有3个保险单,并附有相同的最新生效日期,并且所有单位都有不同的sStatus'。 结果是这样的:
maxdate UnitID InsuranceID sStatus
1/23/12 2949 1938 'Active'
1/23/12 2949 2343 'Cancelled'
1/23/12 2949 4323 'Expired'
如何筛选结果,所以,如果有相同单位与同一日期的多个保险政策不同的状态,那么我们选择的保险政策与'Active'
首先状态,如果不存在,请选择'Cancelled'
,如果不存在,请选择'Expired'
。
我会担心这件事情是否发生。你应该存储datetime ifnormation,所以你可以得到最新的一个,如果他们在同一天。其他明智的方法是最后一次,也许最后的行动被取消了 – HLGEM