다음은 현재 나의 쿼리입니다. 클리닉과 해당 거래별로 그룹화 된 각 회계 기간의 수익을 계산하는 CTE가 있습니다. 개별 클리닉의 근무일을 살펴보고 예상 일수를 기준으로 일일 평균 (현재 날짜 계산) 및 예상 수익을 찾는 쿼리가 이어집니다.동일한 검색어로 전년도 데이터 사용
이 쿼리는 정상적으로 작동합니다. 그러나 나는 더 많은 컬럼을 추가 할 필요가있다. 전년도의 수익도 표시하고 싶습니다.이 경우 검색어를 2016 년과 9 기간으로 제한하고 전년도 수익은 2015 년 9 월에 표시해야하며 전년도의 일을 볼 필요가 있습니다 뿐만 아니라 (나는 비슷한 과정이 될 것이라고 생각한다).
WITH CTE_Revenue AS(
SELECT c.Clinic,
c.ClinicID,
SUM(td.Amount)*-1 AS Revenue,
p.PeriodID,
p.FiscalYear
FROM Trans.TransactionHeader th
JOIN Clinic.[Master] c
ON (th.ClinicID = c.ClinicID)
JOIN Trans.TransactionDetail td
ON (th.ClinicID = td.ClinicID AND th.TranNum = td.TranNum)
JOIN Clinic.EOD e
ON (th.ClinicID = e.ClinicID AND th.TranNum BETWEEN e.StartTran AND e.EndTran)
JOIN Clinic.Period p
ON (CAST(e.TimeRan AS date) BETWEEN p.PeriodStart AND p.PeriodEnd)
AND th.Impacts='C'
GROUP BY c.Clinic, c.ClinicID, p.PeriodID, p.FiscalYear)
SELECT w.Clinic,
w.Revenue,
(w.Revenue/days.CurrentDays) AS DailyAverage,
(w.Revenue/days.CurrentDays)*d.PeriodDays AS ProjectedRevenue
FROM CTE_Revenue w
JOIN Clinic.Dates d
ON (w.ClinicID = d.ClinicID AND w.PeriodID = d.PeriodID AND w.FiscalYear = d.FiscalYear)
JOIN ( SELECT DISTINCT
td.ClinicID,
COUNT(DISTINCT td.DateEntered) AS CurrentDays,
p.PeriodID,
p.FiscalYear
FROM Trans.TransactionDetail td
JOIN Clinic.Period p
ON td.DateEntered BETWEEN p.PeriodStart AND p.PeriodEnd
GROUP BY td.ClinicID, p.PeriodID, p.FiscalYear) AS days
ON (w.ClinicID = days.ClinicID AND w.PeriodID=days.PeriodID AND w.FiscalYear = days.FiscalYear)
WHERE w.FiscalYear = 2016
AND w.PeriodID = 9
SELECT 문을 결과로 끝 나는 상상, 다음과 같이 보일 것입니다 :
이 쿼리가 완전히 최적화되지 않을 수 있습니다SELECT w.Clinic,
w.Revenue,
(w.Revenue/days.CurrentDays) AS DailyAverage,
(w.Revenue/days.CurrentDays)*d.PeriodDays AS ProjectedRevenue,
PrevYear.Revenue,
(PrevYear.Revenue/PrevYear.CurrentDays) AS PYDailyAverage,
(PrevYear.Revenue/PrevYear.CurrentDays)*d.PeriodDays AS PYCalculated
, 난 여전히 SQL에 비교적 새로운 해요. 미리 조언 해 주셔서 감사합니다.
여기에 SQL 서버 다이어그램을 사용하여 테이블 구조와 관계의 이미지입니다 이것은 잘 될 것입니다 통찰력을 주셔서 감사합니다 –
해피 도와주세요! @OMAsphyxiate – SqlZim
2016/2015에만 국한되지 않고 최종 SELECT 문에서보고있는 전년도 데이터를 적용하는 가장 좋은 방법은 –