この質問は非常に興味深いものでした。この問題は、集計クエリを使用して解決されます。
SQL フィドル: http://www.sqlfiddle.com/#!3/29256/1/0
select d.[Client], c.[Account],
max([Paid])as 'PAID',
d.[Date]
from Customer c, Data d where
d.[Client] = c.[Client]
group by d.[Client],c.[Account],d.[Date];
結果を生成します。
CLIENT ACCOUNT PAID DATE
1 Stack 123 January, 01 2013 00:00:00+0000
1 Stack 234 January, 02 2013 00:00:00+0000
1 Stack 33 January, 03 2013 00:00:00+0000
2 Over 674 January, 04 2013 00:00:00+0000
2 Over 2424 January, 05 2013 00:00:00+0000
2 Over 4545 January, 06 2013 00:00:00+0000
3 Flow 22 January, 07 2013 00:00:00+0000
3 Flow 3456 January, 08 2013 00:00:00+0000
3 Flow 445 January, 09 2013 00:00:00+0000
クライアントが多くのアカウントを持っている可能性があり、特定の日付に最大の支払額を持つクライアントアカウントを見つけたい場合、もっと複雑なことをしなければなりません:
select *
from Customer c2, Data d2,
(
select d.[Client],
max([Paid])as 'PAID',
d.[Date]
from Customer c,
Data d
where
d.[Client] = c.[Client] group by d.[Client],d.[Date]
) subQ
where c2.[client] = d2.[client] and
c2.[client] = subQ.[client] and
d2.[Paid] = subQ.[Paid] and
d2.[Date] = subQ.[Date];
グループ化されていない列をクエリに追加することはできないため、次を参照してください。