我有這個查詢的大部分,直到一個新的條件出現,它讓我困惑。鑑於以下簡化表模式:選擇具有多個條件的父行
父表:
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。任何幫助表示讚賞。提前致謝。
1.能不能請你澄清#2?尤其是,這將是正確的假設,如果有與'Active_Flag = 1'任何子女,*所有*它們的過期日期都必須爲空或NULL以滿足條件?2.什麼是「ct」別名,以及爲什麼「ct」的列既不會聚合也不會包含在您的查詢中的GROUP BY中在SELECT和HAVING中)? –
當您使用Group By時,您不需要添加Distinct – Beth
這些是在將我的REAL查詢轉換爲此虛擬版本時發生的問題。我做了適當的修改。 – DerPflug