I have accounting data in SQL. These are entries made for a sale so for every sale made there is an offsetting entry for cost of goods sold as well. In the accounting system we use, it auto generates a transaction id in the TxnId column only for the sales lines not for the cost of goods sold lines for some reason unknown to me. I extract the data using the following query:
SELECT account,name, memo, debit,credit,amount,txnid,refnum,ROW_NUMBER() OVER ( partition BY memo, refnum ORDER BY account,memo,amount desc) AS Row_Counter FROM [dbo].[Table] order by memo asc
The resulting table looks like this:
Account Name Memo Debit Credit Amount TxnID RefNum Row_Counter Sales Company A Wingding 1 Null 855 855 5EASUC-X 12345 1 CostofGoodsSold Company A Wingding 1 -684 Null -684 Null 12345 2 Sales Company A Wingding 2 Null 910 910 5EASUC-X 12345 1 CostofGoodsSold Company A Wingding 2 -850 Null -850 Null 12345 2 Sales Company A Wingding 3 Null 760 760 5EASUC-X 12345 1 CostofGoodsSOld Company A Wingding 3 -665 Null -665 Null 12345 2
What I am trying to do is modify the query above to add a column on the end where it places the amount from the sales column in the same row for the cost of goods sold line based on the memo column. I am hoping to get a table that looks like this:
Account Name Memo Debit Credit Amount TxnID RefNum Row_Counter Newnum Sales Company A Wingding 1 Null 855 855 5EASUC-X 12345 1 855 CostofGoodsSold Company A Wingding 1 -684 Null -684 Null 12345 2 855 Sales Company A Wingding 2 Null 910 910 5EASUC-X 12345 1 910 CostofGoodsSold Company A Wingding 2 -850 Null -850 Null 12345 2 910 Sales Company A Wingding 3 Null 760 760 5EASUC-X 12345 1 760 CostofGoodsSOld Company A Wingding 3 -665 Null -665 Null 12345 2 760
If anyone has any suggestions, they would be greatly appreciated.
Advertisement
Answer
This is what I understood you would want:
SELECT account,name, memo, debit,credit,amount,txnid,refnum,ROW_NUMBER() OVER ( partition BY memo, refnum ORDER BY account,memo,amount desc) AS Row_Counter , SUM(Credit) OVER (PARTITION BY memo) as Newnum FROM [dbo].[Table] order by memo asc