3

我正在使用 mySql 和 C# 创建费用管理器。它使用 Expenses_ID 和 YearMonth 记录费用。现在,我如何对具有不同 YearMonthID 的相同 Expenses_ID 的费用进行求和 - 例如。总“电费”(Expense_ID=1)2012 年成本(2012 年 1 月、2012 年 2 月、2012 年 3 月)
总“租金”(Expense_ID=2)2012 年成本(2012 年 1 月、2012 年 2 月、2012 年 3 月)等等.. 在同一个查询中。

+--------+------------+-------+
| ym_ID  | Expense_ID | Costs |
+--------+------------+-------+
| 2012 1 |          1 |   123 |
| 2012 1 |          2 |   103 |
| 2012 1 |          3 |   100 |
| 2012 2 |          1 |   144 |
| 2012 2 |          2 |   122 |
| 2012 2 |          3 |   155 |
| 2012 3 |          1 |   177 |
| 2012 3 |          2 |   112 |
| 2012 3 |          3 |   111 |
+--------+------------+-------+

这是我的桌子。我想要每项费用的总成本。
输出表:像这样:

+------------+----------------------------+
| Expense_ID | Total_Costs                |
+------------+----------------------------+
|          1 |                        444 |
|          2 |                        337 |
|          3 |                        366 |
+------------+----------------------------+

在这里,我有 3 个 Expense_ID- 但在主表中最多为 30。所以我需要一个查询来完成这个总和。

我试过这些:

SELECT b.Costs=a.Costs+b.Costs 
FROM `Table1` a JOIN `Table1` b 
WHERE a.Expense_ID=b.Expense_ID
      AND a.ym_ID<>b.ym_ID`

请帮帮我!

4

3 回答 3

3

您需要使用聚合函数( SUM ) 来计算每个的总成本Expense_ID

SELECT Expense_ID, SUM(Costs) totalCosts
FROM tableName
//  WHERE ym_ID LIKE '2012%'                   //  if you want for 2012 only
GROUP BY Expense_ID
于 2012-11-24T09:44:38.480 回答
0

上述查询将为您提供每个费用 ID 的总和,但对于仅获取 2012 年每个费用 ID 的总成本(假设您也有其他年份的记录),以下查询会更好

SELECT Expense_ID, SUM(Costs) totalCosts
FROM tableName WHERE ym_ID LIKE '2012%'
GROUP BY Expense_ID
于 2012-11-24T10:17:23.607 回答
0
select expense_id, sum(cost) from COST_T group by expense_id;  

看到这个:

http://sqlfiddle.com/#!2/941e7/1

于 2012-11-24T09:52:50.563 回答