解析涉及计算的多个记录
本文关键字:记录 计算 | 更新日期: 2023-09-27 18:16:33
我有一个发票表,其中偶尔的失误导致为某些记录创建了两个发票。这意味着我有大约2000条由两行组成的发票记录。我需要合并这些重复的记录
每行包含以下信息:
- 关键字段:
LINK
- 合计,减去增值税字段:
ExVAT
- A VAT字段:
VAT
- A类型字段:
TYPE
我已经起草了一些伪代码,但我不太擅长VB,所以它是c#:
foreach Row record in TableName
{
if (record1.TYPE == "priorfee", record2.TYPE == "priorfee")
{
Row newRecord = new Row;
newRecord.LINK = record1.LINK;
newRecord.TYPE = record1.TYPE;
newRecord.VAT = (record1.VAT + record2.VAT);
newRecord.ExVAT = (record1.ExVAT + record2.ExVAT);
record1 = Null;
record2 = Null;
}
else if (record1.TYPE == "subsequentfee", record2.TYPE == "subsequentfee")
{
Row newRecord = new Row;
newRecord.LINK = record1.LINK;
newRecord.TYPE = record1.TYPE;
newRecord.VAT = (record1.VAT + record2.VAT);
newRecord.ExVAT = (record1.ExVAT + record2.ExVAT);
record1 = Null;
record2 = Null;
}
}
现在,我需要把它变成一个工作的VB脚本,或者找出一种方法来做它作为一个SQL脚本(我不介意做他们在两轮,每个类型一个)。
还有,哪个更明智?
好,我写了我的第一个Access查询:p
根据您的要求,这将计算所有发票vat和exvat,根据重复的LINK和TYPE取第一个LINK和TYPE,并将新行插入到您的db。
注意:这不会删除操作过的行。这也不会影响没有重复的行。
INSERT INTO TableName ( TYPE, LINK, VAT, ExVAT )
SELECT TableName.TYPE, TableName.LINK, Sum(TableName.VAT) AS VAT, Sum(TableName.ExVAT) AS ExVAT
FROM TableName
WHERE (((TableName.TYPE)='subsequentfee'))
GROUP BY TableName.TYPE, TableName.LINK
HAVING (((Count(TableName.LINK))>1));
要在priorfee和subsequentfee之间切换,只需更新字符串变量(或复制粘贴查询两次)