【发布时间】:2015-07-19 18:07:03
【问题描述】:
我有 DataTable,它可以有半重复的行。在图片示例中,两个突出显示的行具有所有相同的值,但“金额”列中的金额。我需要识别这些行并将金额相加。数据来自文本文件,没有唯一标识行的键。
我看了一些类似这样的答案 Best way to remove duplicate entries from a data table 但在我的情况下,不仅需要匹配一列,还需要匹配 10 个。
我也尝试了不同的 LINQ 查询,但没有成功。
这是完成这项工作的 SQL 查询:
SELECT [Date1],[Date2],[Date3]
,SUM([Amount1]) as Summary1
,SUM([Amount2]) as Summary2
,SUM([Amount3]) as Summary3
,[col1],[col2],[Rate1],[Rate2],[Rate3],[product],[comment]
FROM [Table]
group by [Date1],[Date2],[Date3],[col1],[col2],[Rate1],[Rate2],[Rate3],[product],[comment]
编辑:为了澄清,SQL 查询是我在查询 SQL 表时如何获得成功结果的示例。
【问题讨论】:
-
你需要做
GroupBy一些功能,比如日期1、列1等 -
那么这里有什么问题和/或问题@AidaM 查询是否产生正确的结果..?此外,如果您正在从文本文件加载/读取数据.. 这实际上很容易做到.. 如果您从 Sql Query 运行,您是否熟悉名为
Control Break Processinggoogle 如何使用GroupBy -
我刚刚在 SQL 中测试了查询,但我的应用程序数据既没有进入也没有进入 SQL。我通过将输入数据保存到数据表来处理输入数据,处理后将导出为 Excel 文件。我需要执行 SQL 查询示例使用 LINQ 或其他方式执行的操作。 @MethodMan
-
我认为创建一个模仿文件布局的类将是一个很好的开始。然后通过文件检查 2 个数据字段将所有文本数据加载到字符串 [] 循环中。如果它们相同,则捕获/计算金额..当值发生变化时,您将获得总计并使用下一个字段日期值作为您的新值,以在循环中检查它们是否等于前一个..这只是一个你可以这样做..控制中断处理..
-
是的,创建一个类文件来匹配输入字段将是一种方法。在此过程之前,已经有很少的更正(“中断”)过程可以修复其他列数据。此外,“文件检查”需要在 10 个列字段上,而不是您提到的 2 个字段上。如果其他人相同,则必须将两者相加。 @MethodMan