我试图使用MS SQL将数据从一个系统移动到另一个系统。在第一个系统中,发票的税项元素位于单独的行中,另一行中则分配为净额和税额,并且是同一行。在SQL表中通过网络发票分割增值税
如果发票上有多个项目,这意味着税收需要分配到每一行。
我认为使用分区是答案,但我也认为我得到了一些错误的东西。
有问题的代码,我想的是:
, CASE
WHEN a.ACTINDX = 11
THEN 0
ELSE (a.DEBITAMT - a.CRDTAMNT)
END AS [Net Amount]
, CASE
WHEN a.ACTINDX = 11 THEN 0
ELSE SUM(a.DEBITAMT-a.CRDTAMNT) OVER (PARTITION BY a.ORCTRNUM)
END AS [Tax Amount]
示例数据:
ACTINDX DEBITAMT CRDTAMNT ORCTRNUM PK
11 40.00000 0.00000 V007502 74058
16 -240.00000 0.00000 V007502 74059
1708 50.00000 0.00000 V007502 74060
1708 50.00000 0.00000 V007502 74061
1736 50.00000 0.00000 V007502 74062
1781 50.00000 0.00000 V007502 74063
应该结束了看起来像:
ACTINDX DEBITAMT CRDTAMNT ORCTRNUM PK
16 -240.00000 00.00000 V007502 74059
1708 50.00000 10.00000 V007502 74060
1708 50.00000 10.00000 V007502 74061
1736 50.00000 10.00000 V007502 74062
1781 50.00000 10.00000 V007502 74063
的40.0顶行税消失,因为价值在发票的四行中按比例分摊。
我已经看过各种网站(例如Baker's Dozen,Stack自己的(例如13290775),微软等),这些都导致我将分区作为解决方案。 Bakers Dozen似乎是最接近的(http://www.codemag.com/Article/1112061),但我不确定如何将Tip One中的编码添加到我的查询中。
我不介意写两个查询,一个提取没有税线的所有数据,另一个只有税线,然后加入他们,通过发票分配税款,但无法让我的头了解如何做到这一点。
我还在考虑是否将整个表格放入Excel中并在该软件中执行,因为这样做相对容易。
我也注意到,不可能对发票的所有元素应用统一税率,因为有些税率可能不含税或减税。
任何建议将被真正感激地接受。
感谢您的建议,约翰。我明天会试试这个,然后更新我的帖子。 – user3398652
看起来很对我 – SqlZim
@SqlZim我们将会看到。可能的精度/舍入问题取决于公差;) –