在一行中更新两个不同的行

时间:2016-02-22 12:37:40

标签: sql sql-server sql-server-2008

这里我的表在MS-SQL中看起来像

ID   Name   Mark1    Mark2    Grade
1    ABC    50       75       A+
2    XYZ    0        15       A+
3    XYZ    20       0        B+

我需要的结果应该是: -

ID   Name   Mark1    Mark2
1    ABC    50       75
2    XYZ    20       15

如果ID,姓名是匹配,我需要显示Mark1& Mark2值 在单行但是等级不同,我必须更新 多行请帮忙。

注意: - 最终结果集中不需要成绩,一旦值更新,则不需要第3行我们需要删除第3行。

我已添加: -

输入: -

ID   Name   Mark1    Mark2    Grade

1    ABC    50       75       A+

2    XYZ    0        15       A+

3    XYZ    20       0        B+

4         ZZZ         30                0                   B+

4         ZZZ          40                0                   B+

4         ZZZ         50                0                   B+  

输出: -

ID   Name   Mark1    Mark2    Grade

1    ABC    50       75       A+

2    XYZ    20       15       A+

4    ZZZ       30                0                   B+

4    ZZZ         40                0                   B+

4    ZZZ         50                0                   B+

1 个答案:

答案 0 :(得分:1)

这可以通过group by和MAX函数完成:

SELECT MIN(ID) as ID, Name, MAX(Mark1), MAX(Mark2)
FROM YourTable
GROUP BY Name