我有SQL会计数据。这些是要进行销售的分录,因此,每进行一次销售,都会有一个抵销的商品销售成本分录。在我们使用的会计系统中,由于某种我不知道的原因,它仅在销售行中自动为TxnId列生成交易ID,而不是为销售行的成本生成交易ID。我使用以下查询提取数据:
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
结果表如下:
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
我正在尝试修改上面的查询,在末尾添加一列,该列将来自销售列的金额放在基于备注列的销售成本行的同一行中。我希望得到一个看起来像这样的表:
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
[如果有人有任何建议,将不胜感激。
这是我了解的您想要的:
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
重新使用行号的模式:
MIN(Credit) OVER (PARTITION BY memo, refnum) AS Newnum
MIN OVER没有命令,只是一个分区。我选择MIN也没有任何特殊原因; SUM(如Gabriel所使用的),MAX,AVG都可以很好地工作,因为它们都忽略空值,并且从您的示例数据看来,只能选择1个剩余的非空值