在出现新情况之前,我一直在查询大部分问题,这让我感到困惑。给定以下简化的表模式:
父表:
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。任何帮助表示赞赏。提前致谢。