新しい条件が発生し、それが私を混乱させるまで、私はこのクエリのほとんどを停止しました。次の簡略化されたテーブルスキーマがあるとします。
親テーブル:
ID
FName
LName
子テーブル:
[Index]
ParentID
Active_Flag
ExpirationDate
私がやりたいのは、次のような親行を取得することです。
- 子供はいません。
- Active_Flagが1であるが、有効期限が空白またはNULLである子があります。
- 確かに子はありますが、Active_Flagが1に設定されている子はありません。
次のクエリは私の最初の2つの基準を思いついた:
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の説明方法がわかりません。どんな助けでも大歓迎です。前もって感謝します。