2012-03-07 59 views
1

具有多行数据都共享相同的公司ID。我如何汇总多行SQL

有没有办法来“和”所有的货款给我使用SQL Server Management Studio 2005中每家公司ID数据的一条线?

比如我现在有下面的数据......

Company_Name Company_ID Amount 
Company 6   10024 120 
Company 6   10024 569 
Company 6   10024 53 
Company 6   10024 100 
Company 6   10024 564 
Company 7   10638 9500 
Company 7   10638 105 
Company 7   10638 624 

什么,我想尝试和得到的是.......

Company_ Name Company_ID  Amount 
Company 6  10024   1406 
Company 7  10638  10229 

有一个这样做的方式?

任何指着我正确的方法是很好的建议。

感谢,

+2

有在SQL没有 “线”。你可以把它称为{记录,元组,行}(含义略有不同),但不包括“行”。你想要的就是所谓的“聚合”。在你的精细手册中查找SUM。 SUM()是“集合函数”之一。 – wildplasser 2012-03-07 11:32:59

+0

@wildplasser:其实,他们需要的是“总结”,稍有不同的含义;) – onedaywhen 2012-03-07 11:59:52

+0

注意你的表是不是完全正常化。 – onedaywhen 2012-03-07 12:05:43

回答

7
SELECT Company_Name, Company_ID, SUM(Amount) 
FROM TableName GROUP BY Company_Name, Company_ID 
2
SELECT Company_Name, Company_ID, sum(Amount) 
FROM table 
group by Company_Name, Company_ID 
1

您需要使用GROUP BYSUM功能。

SELECT Company_Name, Company_ID, SUM(Amount) AS TOTAL_AMOUNT 
FROM myTable 
GROUP BY Company_Name, Company_ID 
3
SELECT Company_Name, Company_ID, sum(Amount) 
FROM your table 
GROUP BY Company_Name, Company_ID 
3

试试这个;

SELECT Company_Name, Company_ID, SUM(Amount) AS Amount 
FROM Companies 
GROUP BY Company_Name, Company_ID; 

演示here

1
WITH T (Company_Name, Company_ID, Amount) 
    AS 
    (
     SELECT 'Company 6', '10024', 120 UNION ALL 
     SELECT 'Company 6', '10024', 569 UNION ALL 
     SELECT 'Company 6', '10024', 53 UNION ALL 
     SELECT 'Company 6', '10024', 100 UNION ALL 
     SELECT 'Company 6', '10024', 564 UNION ALL 
     SELECT 'Company 7', '10638', 9500 UNION ALL 
     SELECT 'Company 7', '10638', 105 UNION ALL 
     SELECT 'Company 7', '10638', 624 
    ) 
SELECT DISTINCT Company_Name, Company_ID, 
     SUM(Amount) OVER (PARTITION BY Company_ID) AS total_amount 
    FROM T; 
+3

再次匿名downvoter来袭! – onedaywhen 2012-03-08 12:35:57