2014-05-16 2 views
1

나는 간단한 테이블을 가지고 있습니다.매일 30 일간의 수익 합계

Date | Revenue 
5/1 12 
5/2 25 
5/3 93 
. 
. 
11/15 47 

두 개의 열을 반환하는 쿼리를 작성하려고합니다. 첫 번째 열은 원본 테이블과 마찬가지로 날짜, 날마다입니다. 두 번째 열은 지난 30 일 동안의 원래 표의 "수익"열의 합계 인 30 일 수익입니다 (표시된 날짜까지 끝납니다). 우리가 합하면 많은 중복이 있습니다. 미리 감사드립니다!

+0

사용하고있는 데이터베이스 :

SELECT outer.date, (SELECT SUM(inner.revenue) FROM table inner WHERE inner.date > outer.date-30) AS thirtydayrevenue FROM table outer 

+1

사용중인 DBMS에 대한 태그와 사용중인 SQL 문이 "합쳐지면 많은 중복"을 일으키는 질문을 [편집]하십시오. 감사. –

+0

내 질문을 읽어 주셔서 감사합니다. 나는 정확한 질문이 아니라 논리에만 관심이있다. 나는 표준 SQL에있는 어떤 것도 잘 사용해야한다고 생각한다. – user3642937

답변

1

나는 대체 솔루션 (테이블이 revenue_table라고 가정합니다)가?
+0

감사합니다! 당신의 논리가 나를 도왔습니다. 도와 줘서 고마워! – user3642937

0

subqueries을 사용하면이 작업을 수행 할 수 있습니다. 예 :

SELECT a.Date, SUM(b.Revenue) 
FROM revenue_table a, revenue_table b 
WHERE b.Date <= a.Date AND b.Date > a.Date - 30 
GROUP BY a.Date; 
+0

나는 이것을 시도 할 것이다! – user3642937

0
SELECT table1.Date, table1.Revenue, Past30DayRevenue = SUM(table2.Revenue) 
FROM insert_your_table_name_here table1 
     JOIN insert_your_table_name_here table2 ON DATEDIFF(day, table2.Date, table1.Date) BETWEEN 0 AND 29 
GROUP BY table1.Date, table1.Revenue 
ORDER BY table1.Date; 
관련 문제