I는 다음과 같이 두 개의 테이블이 있습니다데이터를 반복적으로 가입 수평
Categories (CategoryId, Type, Name)
Transactions (TxnId, DateTime, Amount, CategoryId)
내가 매월 각 카테고리의 모든 트랜잭션 의 SUM
을 싶어합니다.
날짜 범위 (예 : 달 2013-07-01 <= Transactions.DateTime < 2013-08-01
)가 주어진 각 범주의 합계를 생성하는 sproc (아래 참조)을 사용하면이 작업을 수행 할 수 있지만 데이터베이스의 모든 달에 대해 수행하는 방법을 알지 못합니다. 그래서 내가 반복 SPROC를 실행할 수 결정 다른 달 동안 합계를 얻기 위해 (다른 최소/최대 날짜 주어).
나는 하나의 테이블에 결과를 결합하고 싶습니다.
내 카테고리 합계 SPROC 다음과 같습니다 :
SELECT
Categories.Name,
Categories.Type,
Categories.CategoryId,
CategorySpendingForMonth.Amount
FROM
Categories
LEFT OUTER JOIN (
SELECT
CategoryId,
SUM(Amount) AS Amount
FROM
Txns
WHERE
[DateTime] >= @fromDate
AND
[DateTime] < @toDate
GROUP BY
CategoryId
) AS CategorySpendingForMonth ON Categories.CategoryId = CategorySpendingForMonth.CategoryId
ORDER BY
Categories.Type,
Categories.Name
Name Type CatId Amount
Car 0 9 -183.22
Electricity 0 12 -86.05
Insurance 0 17 NULL
Internet 0 14 -39.99
Phone 0 23 -50.04
Rent 0 19 -2284.80
Xoom 0 25 -604.99
그러나 나는 다음과 같이 할 : 846,510,403,210 내 결과는 다음과 같다 그래서 나는 간단하게 할 수 생각
Name Type CatId June July Aug
Car 0 9 -183.22 -183.22 -183.22
Electricity 0 12 -86.05 -86.05 -86.05
Insurance 0 17 NULL -12.30 NULL
Internet 0 14 -39.99 -39.99 -39.99
Phone 0 23 -50.04 -50.04 -50.04
Rent 0 19 -2284.80 -2284.80 -2284.80
Xoom 0 25 -604.99 -604.99 -604.99
(추가 개월 추가 열 추가)
을 매월 sproc을 호출하여 데이터를 추가하고 싶지만 기존 데이터를 함께 결합하는 방법을 모르겠다 (만약 수직 인 경우 UNION을 사용하지만 이것은 수평이다).
이 내가 마음에 (유효하지 않은 SQL)이 무엇 :
SELECT
Name,
Type,
CategoryId,
Amount
FROM
EXEC CategoriesSummary('2013-07-01', '2013-08-01')
FOR i = 0 TO 12
LEFT OUTER JOIN CategoriesSummary('2013-' + (7 + i) +'-01', '2013-' + (8 + 1) + '-01')
NEXT
을 ....하지만이 유효하지 않은, 그래서이 문제를 해결하는 가장 좋은 방법은 무엇인가?
감사합니다.