在出现新情况之前,我一直在查询大部分问题,这让我感到困惑。给定以下简化的表模式:
父表:
ID  
FName  
LName 
子表:
[Index]  
ParentID  
Active_Flag  
ExpirationDate 
我想要做的是获取父行:
- 没有孩子。
 - 有些孩子的 Active_Flag 为 1,但其到期日期为空白或 NULL。
 - 确实有孩子,但没有一个将 Active_Flag 设置为 1。
 
以下查询提出了我的前两个条件:
SELECT p.ID, p.LNAME, p.FNAME,
    CASE 
        WHEN COUNT(ct.indx) = 0 THEN 'None'
        WHEN ct.ExpirationDate is NULL or ct.ExpirationDate = '' THEN 'No expiration date'
    END AS Issue
FROM ParentTable AS p 
    LEFT JOIN ChildTable ct
        ON p.ID = ct.ParentID
GROUP BY p.ID, p.LNAME, p.FNAME, ct.[INDEX], ct.ExpirationDate
HAVING (COUNT(ct.[INDEX]) = 0) OR (ct.ExpirationDate IS NULL OR ct.ExpirationDate = '')
ORDER BY p.LNAME
我不知道如何解释#3。任何帮助表示赞赏。提前致谢。