Sql server 用两列或多列替换具有相同值的行
在asp.NETC中,我有一组很大的值。我正在尝试将具有相同值的行合并,并将它们的一些值相加。目标是在表中有一行包含已合并的信息。。。有没有一种方法可以将具有两列或多列且具有相同值的行相加,并对第三列求和 表示例:Sql server 用两列或多列替换具有相同值的行,sql-server,entity-framework,linq,linq-to-sql,Sql Server,Entity Framework,Linq,Linq To Sql,在asp.NETC中,我有一组很大的值。我正在尝试将具有相同值的行合并,并将它们的一些值相加。目标是在表中有一行包含已合并的信息。。。有没有一种方法可以将具有两列或多列且具有相同值的行相加,并对第三列求和 表示例: id | column1 | column2 |column to sum --------+---------+----------+------------- 1 | 3 | 1 |10 2 | 3 | 1
id | column1 | column2 |column to sum
--------+---------+----------+-------------
1 | 3 | 1 |10
2 | 3 | 1 |10
3 | 3 | 2 |10
4 | 4 | 2 |10
5 | 4 | 2 |10
6 | 7 | 3 |10
7 | 7 | 3 |10
8 | 7 | 3 |10
9 | 5 | 1 |10
10 | 5 | 4 |10
目标:列和值与列1和列2值相同的行和之和
它的结局是这样的:
id | column1 | column2 |column to sum
--------+---------+----------+-------------
- | 3 | 1 |20
3 | 3 | 2 |10
- | 4 | 2 |20
- | 7 | 3 |30
9 | 5 | 1 |10
10 | 5 | 4 |10
有没有一种方法可以通过EF、LINQ或SQL语句实现这一点
谢谢Simple应该做好你的工作。如果选择id,将获得冗余columnToSum
在SQL中
SELECT column2, colum1, SUM(column to sum) GROUP BY column2, colum1
在LINQ中,查询语法未经测试,但应该如下所示
var result = from res in myTableOrClassList
group res by new { res.Column1, res.Column2 } into g
select new { column1 = g.Key.column1, colum2 = g.Key.column2, columnSum = g.Sum(f => f.columToSum) };
Linq方法语法
var linq = myTableOrClassList.GroupBy(p=> new { p.Column1, p.Column2 }).
Select(k=> new {column1 = k.Key.Column1, column2 = k.Key.Column2, sumColumn = k.Sum(each => each.columToSum) });
选择column2,Column1,SUMcolumn以按column2,Column1分组求和。顺便问一下,您希望如何获取id列?首先,感谢您的回答。不需要Id列。我正在尝试将您提供的select子句转换为实体框架。添加了一个有效的LINQ查询LINQ完成了回答问题的技巧。但我可以把问题扩大吗?如果Column1和column2是来自另一列的ID,我必须加入,我如何加入?对不起,现在是早上5点23分,我不能再思考了。。。谢谢,即使你不回答,我也会回答这个问题。可以先做一个小组,然后加入你需要的另一个表格/列表
var linq = myTableOrClassList.GroupBy(p=> new { p.Column1, p.Column2 }).
Select(k=> new {column1 = k.Key.Column1, column2 = k.Key.Column2, sumColumn = k.Sum(each => each.columToSum) });