解析涉及计算的多条记录
Posted
技术标签:
【中文标题】解析涉及计算的多条记录【英文标题】:Resolving multiple records where calculations are involved 【发布时间】:2014-08-05 12:35:11 【问题描述】:我有一张发票表,其中偶尔的失误导致为某些记录创建了两张发票。这意味着我有大约 2000 条由两行组成的发票记录。我需要合并这些重复的记录
每一行都有以下信息:
一个关键字段:LINK
总计,减去增值税字段:ExVAT
增值税字段:VAT
类型字段: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 脚本来做(我不介意分两轮来做,每种类型一个)。
另外,哪个更可取?
【问题讨论】:
@zaitsman 我假设我只是使用 SQL 语句来查找多个记录,例如重复记录向导创建的记录。这就是我需要TYPE
定义的原因,因为有些记录同时具有priorfee
和subsequentfee
条目。在这种情况下,我确实不想要合并它们。我只想在存在多个相同type
的记录时合并。
@zaitsman 问题是,所有这些重复项都有相同的LINK
引用。重复的数量各不相同,并非所有记录都有重复。总共有 1,016 条记录具有一种类型和/或另一种类型的重复项,其中一些记录具有多个重复项。我可以将记录分成两个表(priorfee
和subsfee
),这样会简化流程吗?要回答您的问题,如果有 20 条 priorfee
类型的记录,则具有相同 LINK
引用的那些记录是重复的。
@zaitsman 还有,我指的是 MS-Access 中的一个向导,它创建一个 SQL 查询以根据一个或多个不同的列在特定表中定位重复项。
@zaitsman 在这种情况下,是的。理想情况下,我会更新它们,但这也意味着删除未更新的行,我认为在这种情况下这会使事情变得过于复杂。
@Shell 嗯...不是真的。我正在处理机密数据,有太多可识别信息。我很困惑你为什么需要它?
【参考方案1】:
好的,我写了我的第一个 Access 查询:P
根据您的要求,这将汇总所有发票增值税和 ExVAT,根据重复的 LINK 和 TYPE 获取第一个 LINK 和 TYPE,并在您的数据库中插入新行。
注意:这不会删除操作的行。这也不会影响没有重复的行。
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 之间切换,只需更新字符串变量(或复制粘贴两次查询)
【讨论】:
以上是关于解析涉及计算的多条记录的主要内容,如果未能解决你的问题,请参考以下文章