2011-06-14 142 views
1

我有值SQL Server查询

ID BarID FName LName ColA ColB ColC 

1 22 Jon Carr 0 2 1 
2 23 Don Brown 1 3 2 
3 23 Don Brown 2 1 2 
4 24 A  B  0 2 1 
5 24 A  B  2 3 1 
6 24 A  B  1 2 3 

表名称表Temp

我想这个表转换为这样的事情

ID BarID FName LName ColA ColB ColC 

1 22 Jon Carr 0 2 1 
2 23 Don Brown 3 4 4 
4 24 A  B  3 7 5 

最后3列(ColA ColB ColC)的重复行(重复BarID)总结(总和)

我可以在sql server中写什么sql查询来实现这个功能?

+1

我们都有最后期限,我们都在这里免费。告诉我们,紧急事件不会帮助你。 – 2011-06-14 09:44:47

+1

对于任何给定的“BarID”,我们是否假设所有的'FName'和'LName'值是相等的? – 2011-06-14 09:46:29

+0

请注意本网站的工作方式:http://meta.stackexchange.com/q/7237/27535 – gbn 2011-06-15 17:32:12

回答

0
SELECT 
    MIN(ID), BarID, FName, LName, SUM(ColA), SUM(ColB), SUM(ColC) 
FROM 
    Temp 
GROUP BY 
    BarID, FName, LName 
+0

感谢它的工作:) – user680865 2011-06-14 13:28:09

4

您需要使用GROUP BY

SELECT 
    min(id) AS ID, 
    BarID, 
    FName, 
    LName, 
    sum(ColA) AS ColA, 
    sum(ColB) AS ColB, 
    sum(ColC) AS ColC 
FROM 
    Temp 
GROUP BY 
    BarID, FName, LName 
+0

所有的答案都是正确的,但是这个答案有一点细节......它包含正确的列别名 – 2011-06-14 10:32:44

+0

+1构造查询和使用别名 – Pankaj 2011-06-14 11:14:27

+0

感谢它的工作:) – user680865 2011-06-14 13:27:53

0

应该用GROUP BY条款很简单:

SELECT 
    MIN(ID) AS 'ID', 
    BarID, FName, LName, 
    SUM(ColA) AS 'ColA', 
    SUM(ColB) AS 'ColB', 
    SUM(ColC) AS 'ColC' 
FROM dbo.Temp 
GROUP BY BarID, FName, LName 

这被总结了列A,B和C,和组BarID, FName, LName

+0

感谢它的工作:) – user680865 2011-06-14 13:28:00