Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 用两列或多列替换具有相同值的行_Sql Server_Entity Framework_Linq_Linq To Sql - Fatal编程技术网

Sql server 用两列或多列替换具有相同值的行

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

在asp.NETC中,我有一组很大的值。我正在尝试将具有相同值的行合并,并将它们的一些值相加。目标是在表中有一行包含已合并的信息。。。有没有一种方法可以将具有两列或多列且具有相同值的行相加,并对第三列求和

表示例:

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) });