2012-11-24 5 views
3

mySql과 C#을 사용하여 비용 관리자를 만듭니다. Expenses_ID 및 YearMonth로 비용을 기록합니다. 이제 어떻게하면 같은 Expenses_ID의 다른 YearMonthID -Ed로 비용을 합산 할 수 있습니까? 총 '전기 요금'(Expense_ID = 1) 2012 년 비용 (2012 년 1 월, 2012 년 2 월, 2012 년 3 월)
총 임대료 (Expense_ID = 2) 2012 년 비용 (2012 년 1 월 2012 년 2 월 2012 년 2 월) 그래서 .. 같은 쿼리에서.같은 이름이지만 테이블의 ID가 다른 값의 합계

+--------+------------+-------+ 
| 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` 

나를 제발 도와주세요!

+0

원하는 결과를 제공하는 샘플 레코드를 제공하는 경우 '+ 1' –

답변

3

당신이보기 각 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 
0
select expense_id, sum(cost) from COST_T group by expense_id; 

에 대한 총 비용을 계산하기 위해 집계 함수 (SUM)를 사용해야합니다

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

0

위의 쿼리는하지만, 다음 쿼리는 더 좋을 것이다 (당신이 다른 년 동안 기록이 있다고 가정)에만 2012 년 각 expense_ID에 대한 총 비용을 얻기 위해 당신에게 각 expense_ID의 합을 줄 것

SELECT Expense_ID, SUM(Costs) totalCosts 
FROM tableName WHERE ym_ID LIKE '2012%' 
GROUP BY Expense_ID 
관련 문제