#sql-server
#sql-server
Вопрос:
Я должен определить общий оборот за сезон. Для этого я должен комбинировать разные даты (месяцы), но проблема в том, что мой код выдает месяцы отдельно и указывает за каждым месяцем, к какому сезону он относится, и каков оборот за месяц. Это относится к каждому году, поскольку в моей базе данных есть даты (месяцы) разных лет. Меня интересуют не годы, а сезоны. Следовательно, я хочу рассчитать общий оборот за сезон (за все годы), не рассматривая месяцы как результат. Как я могу это сделать и что я делаю неправильно в своем коде?
SELECT
MONTH(H.Startdate) AS Month
, SUM((DATEDIFF(DAY, H.Startdate, H.Enddate) 1) * F.DayPrice) SUM((DATEDIFF(DAY, H.Startdate, H.Enddate) 1) * A.DayPrice) SUM(CostReparation) AS TotalTurnover
, (CASE
WHEN MONTH(H.Startdate) IN (12, 1, 2) THEN 'Winter'
WHEN MONTH(H.Startdate) IN (3, 4, 5) THEN 'Spring'
WHEN MONTH(H.Startdate) IN (6, 7, 8) THEN 'Summer'
WHEN MONTH(H.Startdate) IN (9, 10, 11) THEN 'Fall'
END
) AS Seasons
FROM
RentContract AS H
INNER JOIN RentedCar AS VF
ON H.RentContractNr = VF.RentContractNr
INNER JOIN Car AS F
ON VF.FrameNr = F.FrameNr
INNER JOIN RentedAccessories AS VA
ON H.RentContractNr = VA.RentContractNr
INNER JOIN Accessories AS A
ON VA.Barcode = A.Barcode
INNER JOIN Damage AS S
ON H.RentContractNr = S.RentContractNr
WHERE
Status = 'Paid'
GROUP BY
YEAR(H.Enddate)
, MONTH(H.Startdate)
-- HAVING MONTH (H.Startdate) IN (12, 1, 2)
ORDER BY
MONTH(H.Startdate) ASC OFFSET 0 ROW
GO
Комментарии:
1. пожалуйста, предоставьте образцы данных и желаемый результат
2.
GROUP BY CASE WHEN MONTH(H.Startdate).......