-1

クレジット レコードとデビット レコードに関する情報を格納する次の 2 つのテーブルがあります。

バウチャーCrテーブルが含まれています

voucherType    voucherPrefix    voucherNo    crparty    cramount
SALES          S                1            1          43000
SALES          S                2            1          10000

ticketDr テーブルに含まれるもの

voucherType    voucherPrefix    voucherNo    drparty    dramount
SALES          S                1            5          43000
SALES          S                2            5          10000

ここで、SALES バウチャー S/1 で、パーティ 1 は同じ金額のパーティ 5 に対して 43000 の金額で貸方記入されています。SALES バウチャー S/2 の場合も同様で、パーティ 1 には同じ金額のパーティ 5 に対して 10000 の金額が入金されています。

今、次のように結果を表示したい パーティー1についてクエリを実行した場合

PARTY    CREDIT    DEBIT    DEBITPARTY    voucherType    voucherPrefix    voucherNo
1        43000              5              SALES          S                1
1        10000              5              SALES          S                2

助けてください

4

2 に答える 2

0

私があなたの質問を正しく理解しているなら、これはあなたが探しているものです

Select c.crParty as Party, d.dramount as credit , null as debit,
d.drParty as DEBITPARTY,c.voucherType as voucherType,
d.voucherPrefix,d.voucherNo
from VoucherCr as c inner join VoucherDr as d
on c.voucherNo=d.VoucherNo and c.voucherPrefix=d.voucherPrefix
where c.crparty=1
group by d.dramount,c.cramount,d.voucherPrefix,d.voucherNo,c.crParty,
c.voucherType,d.drParty
order by d.dramount desc

SQLFIDDLEをお試しください

于 2012-12-25T06:22:47.297 に答える
0

このクエリを使用してみてください。あなたの場合、1つdramountが多くの行に分割される可能性はありますvoucherDrか? たとえば、43000->40000+3000

select 
vc.Party,vc.CrAmount, vd.drAmount, vd.drparty, 
vc.voucherType, vc.voucherPrefix, vc.voucherNo

from voucherCr vc
left join voucherDr vd on (vc.voucherType=vd.voucherType)
                          and (vc.voucherPrefix=vd.voucherPrefix)
                          and (vc.voucherNo=vd.voucherNo)

where vc.PARTY=1
于 2012-12-25T05:37:25.420 に答える