たぶん、私はこの問題をすべて間違って見ていますが、ここに行きます。
オフィスで使用するいくつかの CRM ソフトウェアのバックエンドであるデータベースがあります。上司は、クライアントとその配偶者から誕生日を抽出する単純なクエリを必要としています。
テーブル構造は次のとおりです。
Client Details Table:
Client Name, Client Birthday, Spouse Name, Spouse Birthday, <etc>
クライアントの誕生日または配偶者の誕生日が翌月のいずれかであるかどうかを判断するケース選択を使用した簡単なクエリがあります。
クエリは次のように圧縮されます。
SELECT a.*
FROM
(SELECT
(CASE WHEN <birthday calculation>
ELSE NULL
END) as WhoHasBDay,
ClientName,
SpouseName
FROM
ClientDetailsTable) as a
WHERE
a.WhoHasBDay IS NOT NULL
これにより、クライアントまたは配偶者の誕生日が X 日以内にあるエントリが返されます。
ただし、クライアントとその配偶者が次の X 日以内に誕生日を迎える場合、クエリでそれぞれに 1 回ずつ結果を返したいと思います。
IE、ここに次のデータがあります
CLIENT X: Birthday in 5 days
CLIENT Y: Spouse's Birthday in 8 days
CLIENT Z: Birthday in 3 days, Spouse's Birthday in 9 days.
私が欲しい結果セットは
CLIENT X BDAY T+5
CLIENT Y SPOUSE BDAY T+8
CLIENT Z BDAY T+3
CLIENT Z SPOUSE BDAY T+9
おそらく、私はこの問題に間違った方法で取り組んでいます。その場合、それを攻撃するためのより良い方法についての提案をいただければ幸いです。それ以外の場合は、これに対する解決策があれば教えてください。