解析涉及计算的多个记录

本文关键字:记录 计算 | 更新日期: 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));

要在priorfeesubsequentfee之间切换,只需更新字符串变量(或复制粘贴查询两次)