Wybór najwyższego numeru Seq przez zagnieżdżone łączenie
Chciałbym przyjąć największy numer sekwencyjny dla każdego identyfikatora klienta (największy numer kolejny zostanie obliczony na podstawie najwyższego salda konta bankowego).
Ta tabela ma 100000 rekordów.
Tabele
ClientSeqTable T1
<code>ClID SeqId 1 11 1 12 1 13 1 14 1 15 2 16 2 17 2 18 2 19 3 110 3 111 3 112 3 113 </code>
SeqBranchTable T2
<code>SeqId BalID 11 1 12 2 13 3 14 4 15 5 16 6 17 7 18 8 19 9 110 10 111 11 112 12 113 13 </code>
Balancetable t3
<code>BalID Balance 1 30000 2 26789 3 23456 4 12345 5 21234 6 12456 7 45632 8 23456 9 99999 10 12345 11 21234 12 12456 13 45632 </code>
Wynik byłby
<code>ClID SeqID Balance 1 1 30000 2 9 99999 3 4 45632 </code>
Próbowałem w ten sposób, ale nie działało dla mnie
<code>SELECT RS.Investigationid,MAX(stt.sequenceid) 'SeqId', T.HighestBalance 'Balance' FROM ClientSeqTable T1, SeqBranchTable T2, branbaltable t3, ( SELECT t1.clid ,MAX(T3.Balance) 'HighestBalance' FROM ClientSeqTable T1, SeqBranchTable T2, branbaltable t3, WHERE t1.seqid = T2.seqID AND T2. balId= T3. balId GROUP BY RS.Investigationid,stt.SequenceId ) T WHERE T2.balId = T3.BalId AND T1.SeqId = T2.SeqId AND T3.HighestBalance = T2.balance AND T1.clID = t.ClID GROUP BY T1.ClID </code>
Z powyższymi wynikami zapytania są następujące.
<code>ClID SeqNu Bal 1 1 30000 1 2 30000 1 3 30000 1 4 30000 1 5 30000 2 3 99999 2 4 99999 2 1 99999 2 9 99999 3 2 45632 3 5 45632 3 3 45632 3 4 45632 </code>