데이터가 두 테이블 ORDERS
및 training
에 있습니다. 다양한 고객에게 다양한 교육이 제공됩니다. 관련된 교육을받은 고객에게 수익에 미치는 영향에 대해 알고 싶습니다. 이를 달성하기 위해 교육을받은 날짜로부터 각 고객에 대한 지난 90 일 및 미래 90 일 동안의 수익을 살펴보고자합니다. 다시 말해 2014 년 3 월 30 일에 고객이 교육을받은 경우 2014 년 1 월 1 일부터 2014 년 6 월 30 일까지의 수익을보고 싶습니다. 다음과 같은 쿼리를 작성했습니다.특정 날짜를 기준으로 과거 데이터 선택 및 그룹화
:
custno Revenue TrainingDate RevenueMonth
0000100 159.20 2014-06-02 00:00:00.000 2014-03-01 00:00:00.000
0000100 199.00 2014-06-02 00:00:00.000 2014-04-01 00:00:00.000
0000100 79.60 2014-06-02 00:00:00.000 2014-05-01 00:00:00.000
0000100 29.85 2014-06-02 00:00:00.000 2014-06-01 00:00:00.000
0000100 79.60 2014-06-02 00:00:00.000 2014-07-01 00:00:00.000
0000100 99.50 2014-06-02 00:00:00.000 2014-08-01 00:00:00.000
0000250 437.65 2013-02-26 00:00:00.000 2012-11-01 00:00:00.000
0000250 4181.65 2013-02-26 00:00:00.000 2012-12-01 00:00:00.000
0000250 4146.80 2013-02-26 00:00:00.000 2013-01-01 00:00:00.000
0000250 6211.93 2013-02-26 00:00:00.000 2013-02-01 00:00:00.000
0000250 2199.72 2013-02-26 00:00:00.000 2013-03-01 00:00:00.000
0000250 4452.65 2013-02-26 00:00:00.000 2013-04-01 00:00:00.000
원하는 출력 예 :
select
o.custno,
sum(ISNULL(a.revenue,0)) as Revenue,
o.Date as TrainingDate,
DATEADD(mm, DATEDIFF(mm, 0, a.created), 0) as RevenueMonth
from ORDERS a,
(select distinct custno, max(Date) as Date from Training group by custno) o
where a.custnum = o.custno
and a.created between DATEADD(day, -90, o.Date) and DATEADD(day, 90, o.Date)
group by o.custno, o.Date, DATEADD(mm, DATEDIFF(mm, 0, a.created), 0)
order by o.custno
이 쿼리의 샘플 출력은 다음과 같이 보입니다 다음 형식의 데이터 :
CustNo Revenue TrainingDate RevenueMonth
100 <Some revenue figure> March 15 2014 Dec 15 2013 – Jan 14 2014 (Past month 1)
100 <Some revenue figure> March 15 2014 Jan 15 2014 – Feb 14 2014 (Past month 2)
100 <Some revenue figure> March 15 2014 Feb 15 2014 – Mar 14 2014 (Past month 3)
100 <Some revenue figure> March 15 2014 Mar 15 2014 – Apr 14 2014 (Future month 1)
100 <Some revenue figure> March 15 2014 Apr 15 2014 – May 14 2014 (Future month 2)
100 <Some revenue figure> March 15 2014 May 15 2014 – Jun 14 2014 (Future month 3)
여기에서 RevenueMonth
열은 교육 날짜에 상대적인 데이터 인 경우이 형식이 아니어도됩니다. 중괄호에있는 '과거'및 '미래'월 참조는 출력을 설명하기위한 것이지 출력에 표시 할 필요가 없습니다.
내 쿼리는 데이터를 가져 와서 데이터를 월 단위로 그룹화합니다. 나는 그 달들을 훈련 날짜에 비례하여 그룹화하고 싶습니다. 예를 들어 - 훈련이 3 월 15 일에 주어진다면, 나는 지난 달이 2 월 15 일에서 3 월 14 일까지이고, 나의 질문은 그렇게하지 않는다. 나는이 쿼리에서 약간의 비틀기만으로도 내가 한 일을 성취 할 수 있다고 생각한다.
위와 같은 질문에 대한 도움을 주시면 감사하겠습니다. 이 라인을 따라
시각화 질문 쿼리 질문에서 확실히 분리되어 업데이트보다 명확하게하기 위해, 조인 구문을 현대적인 사용, 그리고 더 나은 별도로 요구된다. –
제안에 감사드립니다. 지금 질문을 수정했습니다. – Patthebug
교육의 효과를보고 있다면 왜 교육 전의 수익을 통해 수익을 거두고 있습니까? –