SQL join one column to many based on condition -
i have 2 tables follows:
table a
docnumber line amount doctype 1000 1 100 3 1000 2 200 3 1001 1 300 5 table b
docnumber debit credit account 1000 100 0 5410 1000 200 0 5560 1001 0 300 6790 i'm trying create select looks this:
docnumber line amount account 1000 1 100 5410 1000 2 200 5560 1001 1 300 6790 so, logically, i'm trying figure out way join a.amount b.debit a.doctype = 3 , join a.amount b.credit a.doctype = 5
as can see, i'm novice appreciated
assuming sql server. assuming docnumber intended play role in join well, despite not being explicitly stated in question.
you can use conditions on join want:
select a.docnumber, a.line, a.amount, b.account join b on a.docnumber = b.docnumber , ((a.doctype = 3 , a.amount = b.debit) or (a.doctype = 5 , a.amount = b.credit)) order a.docnumber, a.line; alternatively, put where clause, more clear:
select a.docnumber, a.line, a.amount, b.account join b on a.docnumber = b.docnumber (a.doctype = 3 , a.amount = b.debit) or (a.doctype = 5 , a.amount = b.credit) order a.docnumber, a.line
Comments
Post a Comment