これを試して
SELECT c.sin, c.name
FROM customer c
INNER JOIN trans t ON t.sin = c.sin
WHERE t.funcID = XXXX
AND t.transDate = '2012-10-19'
テキストマッチングが必要な場合、つまり「エネルギー」
SELECT c.sin, c.name
FROM customer c
INNER JOIN trans t ON t.sin = c.sin
INNER JOIN fund f ON f.fundID = t.fundID
WHERE f.fundName = 'Energy'
AND t.transDate = '2012-10-19'
編集:
あなたの返信から、トランザクション テーブル (trans) には、そのファンドの売買となる同じファンド ID の同じ日付の多数のレコードが含まれている可能性があります。
その場合、それらを合計する必要があります。サブクエリはそれを行うことができます。以下は、sin、fundID、transDate、およびremaining_sharesの一意の数を提供できると思います。このようにして、すべてのトランザクションをトリミングし、ポジティブなトランザクションのみを保持して、それを顧客と結合できます。
SELECT t.sin, t.fundID, t.transDate, SUM(t.shares) AS remaining_shares
FROM trans t
WHERE SUM(shares) > 0
GROUP BY t.sin, t.fundID
HTH