AccountNum、InvoiceAcc、Blocked の 3 行のテーブルがあります。テーブルのほとんどの行に InvoiceAcc がありますが、すべてではありません。AccountNum は一意の識別子であり、多数の AccountNum が同じ InvoiceAcc を持つ可能性があります。Blocked は、0、1、および 2 から変化する int 値です。
InvoiceAcc は AccountNum に基づいているため、子オフィスを処理する親オフィスと考えてください。
たとえば、次のような親会社です。
AccountNum - 1, InvoiceAcc - null, Blocked - 2
次のような子オフィスがある場合があります。
AccountNum - 1-1, InvoiceAcc - 1, Blocked - 0
AccountNum - 1-2, InvoiceAcc - 1, Blocked - 1
私がやりたいのは、行の InvoiceAcc とそれに続く AccountNum のブロックされた値をチェックすることです。したがって、上記の例で、次のようなクエリを実行した場合:
SELECT BLOCKED FROM CustTable WHERE AccountNum = '1-1'
これはブロックされた値であるため、0 を返します。私がやりたいのは、より高い値とその親アカウントを持つ2を返すことです。また、親アカウントのブロック値が 1 で、照会している子アカウントのブロック値が 2 の場合、2 を返す必要があります。ここでサブセレクトが必要になると思いますか?
親アカウントがある場合は、それ自体またはその親アカウントのいずれかに基づいて、ブロックされた最高値を返す必要があります。