我目前有以下SQL表:
ID (PK) | StartDate | EndDate | Trial | AccountID
-------------------------------------------------------------------------
1 | 2014/08/01 00:00:00 | 2014/09/01 00:00:00 | 1 | 1
2 | 2014/09/15 00:00:00 | 2014/10/15 00:00:00 | 0 | 1
3 | 2014/09/16 00:00:00 | 2014/10/16 00:00:00 | 1 | 2
我需要实现的是已过期试用许可证的AccountID列表(Trial = 1& EndDate< Now)但不管EndDate是否与非试用许可证相关联。
在上面的示例中,ID 3将是唯一返回的ID,因为ID 1已被ID 2取代。
我尝试过使用多个子查询,但它们似乎过大而且仍然不符合要求。
答案 0 :(得分:1)
select acountid
from your_table
group by accountid
having sum(trail = 0) = 0
and sum(trail = 1 and enddate < now()) > 0