У меня есть вид базы данных Monthly Status Мне нужно создать отчет на основе. Данные в представлении выглядит примерно так:SQL-запрос для сравнения продаж продукта по месяцам
Category | Revenue | Yearh | Month
Bikes 10 000 2008 1
Bikes 12 000 2008 2
Bikes 12 000 2008 3
Bikes 15 000 2008 1
Bikes 11 000 2007 2
Bikes 11 500 2007 3
Bikes 15 400 2007 4
... И так далее
вид имеет категорию продукта, доход, год и месяц. Я хочу создать отчет по сравнению с 2007 и 2008 годами, показывая 0 за месяцы без продаж. Таким образом, отчет должен выглядеть следующим образом:
Category | Month | Rev. This Year | Rev. Last Year
Bikes 1 10 000 0
Bikes 2 12 000 11 000
Bikes 3 12 000 11 500
Bikes 4 0 15 400
Главное, чтобы заметить это, как месяц 1 имеет только объем продаж в 2008 году, и, следовательно, 0 на 2007 год Кроме того, месяц 4 только не имеет продаж в 2008 году , следовательно, 0, в то время как он имеет продажи в 2007 году и все еще появляется.
Кроме того, в докладе фактически за финансовый год, - так что я хотел бы иметь пустые столбцы с 0 в обоих, если не было продаж, скажем, месяц 5 за 2007 или 2008
запросе я получил внешность что-то вроде этого:
SELECT
SP1.Program,
SP1.Year,
SP1.Month,
SP1.TotalRevenue,
IsNull(SP2.TotalRevenue, 0) AS LastYearTotalRevenue
FROM PVMonthlyStatusReport AS SP1
LEFT OUTER JOIN PVMonthlyStatusReport AS SP2 ON
SP1.Program = SP2.Program AND
SP2.Year = SP1.Year - 1 AND
SP1.Month = SP2.Month
WHERE
SP1.Program = 'Bikes' AND
SP1.Category = @Category AND
(SP1.Year >= @FinancialYear AND SP1.Year <= @FinancialYear + 1) AND
((SP1.Year = @FinancialYear AND SP1.Month > 6) OR
(SP1.Year = @FinancialYear + 1 AND SP1.Month <= 6))
ORDER BY SP1.Year, SP1.Month
проблема с этим запросом является то, что она не будет возвращать четвертую строку в моем примере выше данных, так как у нас не было каких-либо продаж в 2008 году, но мы на самом деле в 2007 году
Это, вероятно, общий запрос/проблема, но мой SQL рвется после долгой разработки. Любая помощь очень ценится!
О, кстати, я использую SQL 2005 для этого запроса, поэтому, если есть какие-то полезные новые функции, которые могут помочь мне, дайте мне знать.