난 당신이 오히려 고정 된 값 (데이터가 수정 될 올바른 값이 표시를 허용하는)에 비해 동적 할 거라고 믿고있어. 아래 예제는 SELECT 쿼리에서 기본 데이터를 수정하지 않고이 작업을 수행하는 방법을 보여줍니다.
테스트 데이터 (# = 임시 테이블)
CREATE TABLE #TestTable (Units int, Date_Field datetime, Master_ID int)
INSERT INTO #TestTable (Units, Date_Field, Master_ID)
VALUES
(10,'2016-07-06',1)
,(20,'2016-08-06',1)
,(30,'2016-09-06',1)
,(40,'2016-10-06',1)
,(50,'2016-11-06',1)
,(60,'2016-12-06',1)
,(70,'2016-10-06',2)
,(80,'2016-11-06',2)
,(90,'2016-12-06',2)
쿼리
SELECT
tt.Master_ID
,tt.Date_Field
,tt.Units
,SUM(tt2.Units) Sum_Units
FROM #TestTable tt
LEFT JOIN #TestTable tt2
ON tt2.Date_Field BETWEEN DATEADD(m,-3,tt.Date_Field) AND tt.Date_Field
AND tt.Master_ID = tt2.Master_ID
GROUP BY tt.Master_ID, tt.Date_Field, tt.Units
ORDER BY tt.Master_ID, tt.Date_Field
출력
Master_ID Date_Field Units Sum_Units
1 2016-07-06 00:00:00.000 10 10
1 2016-08-06 00:00:00.000 20 30
1 2016-09-06 00:00:00.000 30 60
1 2016-10-06 00:00:00.000 40 90
1 2016-11-06 00:00:00.000 50 120
1 2016-12-06 00:00:00.000 60 150
2 2016-10-06 00:00:00.000 70 70
2 2016-11-06 00:00:00.000 80 150
2 2016-12-06 00:00:00.000 90 240
여기에 논리는 당신이 함께 같은 테이블에 다시 합류한다는 것입니다 날짜 범위를 누적 합계를 나타내는 -3 개월 (이 예제의 경우)으로 지정하십시오.
데이터를 가져올 때 한 번만 실행하면되므로 계산 된 열 (다른 접근 방식)에 데이터를 유지하려고하는 것이 더 쉽습니다. 계산 된 열은 데이터를이 테이블에 넣을 때마다 계산해야합니다.
실행중인 Express 버전 (2008, 2012, 2014 등)? –
안녕하세요, Rich를 사용하고 있습니다. 2016 –
그리고이 데이터를 테이블에 보관해야합니까, 아니면 데이터를 가져올 때만이 새 열을 원할 것입니까 (쿼리에서 계산할 수 있도록)? –