私はこのようなテーブルを持っています。ORACLE - データ行のペアを注文するカスタムORDER BY
|DATE |VOUCHER_NO|CURRENCY|AMOUNT|DESCRIPTION|JOURNAL_TYPE|COA_NO |
|03/30/2016|0000000001|USD |2000 |ABCD |CREDIT |150001 |
|03/30/2016|0000000001|USD |2000 |ABCD |DEBIT |150001 |
|03/30/2016|0000000002|USD |1500 |ABCD |CREDIT |150002 |
|03/30/2016|0000000002|USD |1000 |ABCD |DEBIT |150002 |
|03/30/2016|0000000002|USD |500 |ABCD |DEBIT |150002 |
|03/30/2016|0000000003|USD |4000 |ABCD |CREDIT |150003 |
|03/30/2016|0000000003|USD |2000 |ABCD |DEBIT |150003 |
|03/30/2016|0000000003|USD |1000 |ABCD |DEBIT |150003 |
|03/30/2016|0000000003|USD |500 |ABCD |DEBIT |150003 |
|03/30/2016|0000000003|USD |500 |ABCD |DEBIT |150003 |
まず、ジャーナルタイプクレジットをもって、最大額でテーブルをソートする必要があります。それには、デビットの金額に関係なく、Voucher_Noに基づいたデビットが続き、次に2番目に大きな金額の次にデビットがあります。
|DATE |VOUCHER_NO|CURRENCY|AMOUNT|DESCRIPTION|JOURNAL_TYPE|COA_NO |
|03/30/2016|0000000003|USD |4000 |ABCD |CREDIT |150003 |
|03/30/2016|0000000003|USD |2000 |ABCD |DEBIT |150003 |
|03/30/2016|0000000003|USD |1000 |ABCD |DEBIT |150003 |
|03/30/2016|0000000003|USD |500 |ABCD |DEBIT |150003 |
|03/30/2016|0000000003|USD |500 |ABCD |DEBIT |150003 |
|03/30/2016|0000000001|USD |2000 |ABCD |CREDIT |150001 |
|03/30/2016|0000000001|USD |2000 |ABCD |DEBIT |150001 |
|03/30/2016|0000000002|USD |1500 |ABCD |CREDIT |150002 |
|03/30/2016|0000000002|USD |1000 |ABCD |DEBIT |150002 |
|03/30/2016|0000000002|USD |500 |ABCD |DEBIT |150002 |
どのようにするのですか?私が金額で最初に注文した場合、デビットのものは下に分散し、最初にvoucher_noで注文した場合、金額で注文されません。
特定のバウチャーの場合、これは「払い戻し」の前に「クレジット」となるでしょうか? –
@sql_dummy:最初に 'credit'を追加する必要がある場合は、別の列を追加する必要があります。私は自分の答えを編集します。 – dnoeth
彼は最高額で伝票を尋ねます。彼は最大のクレジット額を持っているバウチャーに尋ねました。 –