sql - Trying to Update one table with another table -


i have ledger table following 3 columns along others not included brevity:

**gl_account id** | **gl_amount** |  **gl_adjustmentamount**     9500          |     null      |        null      ...          |   ...         |        ... 

i have different adjustment table differing columns above except two:

**gl_account id** |   **gl_adjustmentamount**      9500         |           289.84      9500         |           9.63      9500         |           13646.11      9500         |           835.31      9500         |           -210      9500         |           -1019.02      9500         |           -200 

i need update ledger table include 7 new gl_adjustments includes 1 of values 289.84.

here code.

update ledgertable set [gl_adjustmentamount] = adjust.gl_adjustmentamount  ledgertable genled      full outer join adjustmenttable adjust      on genled.gl_accountid = adjust.gl_accountid 

case 1 : update 1 account

you can use if want 1 account :

declare @accountid int set @accountid = 9500  update  ledger set     gl_adjustmentamount = gl_adjustmentamount + (select     sum(a.gl_adjustmentamount)                                                            adjustment                                                           a.gl_accountid = @accountid)   gl_accountid = @accountid 

mind you, accountid have specified here.

case 2 : update accounts

if want work accounts (which should & more case), need more "generalized" query of sort :

update ledger set     gl_adjustmentamount = isnull(gl_adjustmentamount,0) + isnull(collatedadjustments.adjustment, 0) ledger ledger inner join  (select         a.gl_accountid,                 sum(a.gl_adjustmentamount) adjustment            adjustment adjustments group        adjustments.gl_accountid) collated on              ledger.gl_accountid = collated.gl_accountid 

here's some sample data can test against :

create table ledger(gl_accountid int, gl_amount int, gl_adjustmentamount int); create table adjustment(gl_accountid int, gl_adjustmentamount int);  insert ledger(gl_accountid,gl_amount, gl_adjustmentamount) values(9500, null, null); insert ledger(gl_accountid,gl_amount, gl_adjustmentamount) values(9600, null, null); insert ledger(gl_accountid,gl_amount, gl_adjustmentamount) values(9700, null, null); insert ledger(gl_accountid,gl_amount, gl_adjustmentamount) values(9800, null, null);  insert adjustment(gl_accountid, gl_adjustmentamount) values(9500, 289.84); insert adjustment(gl_accountid, gl_adjustmentamount) values(9500, 9.63); insert adjustment(gl_accountid, gl_adjustmentamount) values(9500, 13646.11); insert adjustment(gl_accountid, gl_adjustmentamount) values(9500, 835.31); insert adjustment(gl_accountid, gl_adjustmentamount) values(9500, -210); insert adjustment(gl_accountid, gl_adjustmentamount) values(9500, -1019.02); insert adjustment(gl_accountid, gl_adjustmentamount) values(9500, -200);  insert adjustment(gl_accountid, gl_adjustmentamount) values(9600, 29.84); insert adjustment(gl_accountid, gl_adjustmentamount) values(9600, 29.63); insert adjustment(gl_accountid, gl_adjustmentamount) values(9600, 16646.11); insert adjustment(gl_accountid, gl_adjustmentamount) values(9600, 335.31); insert adjustment(gl_accountid, gl_adjustmentamount) values(9600, -1210); insert adjustment(gl_accountid, gl_adjustmentamount) values(9600, -2019.02); insert adjustment(gl_accountid, gl_adjustmentamount) values(9600, -1200);  insert adjustment(gl_accountid, gl_adjustmentamount) values(9700, 2239.02); insert adjustment(gl_accountid, gl_adjustmentamount) values(9700, 1400);  insert adjustment(gl_accountid, gl_adjustmentamount) values(9800, 4121.02); insert adjustment(gl_accountid, gl_adjustmentamount) values(9800, 1234); 

this query takes previous adjustments (in ledger table) equation well.

hope helps!!!


Comments

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -