Aylık Durum veritabanı görünümüne sahibim. görünümünde veri şöyle görünür:SQL sorgusu ile ay sonuna göre ürün satışlarını karşılaştırmak için
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
... Ve benzeri
görünümü bir ürün kategorisi, bir gelir, bir yıl ve bir ay vardır. Satışları olmayan aylar için 0'ı gösteren, 2007 ve 2008'i karşılaştıran bir rapor oluşturmak istiyorum. fark
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
önemli şey ay 1 sadece ay 4 sadece 2008 yılında hiçbir satış var, 2008 yılında satışlarını sahiptir ve bu nedenle de 2007 yılı için 0 nasıl geçerli: rapor bu gibi görünmelidir Yani Bu nedenle, 0, satışları 2007 yılında iken ve hala ortaya çıkıyor.
Ayrıca, rapor mali yıl için aslında - ben 2007 veya 2008
Tipler var sorgu biri için diyelim ki ayda 5 satış yapmıyorsanız orada hem eğer 0 ile boş sütunlar sahip olmak isterdim böyle bir şey:
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
bu sorgu ile sorun 2008 yılında herhangi bir satış yoktu çünkü, yukarıda benim örnek veriler dördüncü satır dönmek olmazdı yani, ama aslında 2007
yaptığıBu, muhtemelen ortak bir sorgu/sorundur, ancak SQL çok uzun zamandır ön uç geliştirme yaptıktan sonra paslı. Herhangi bir yardım büyük beğeni topluyor!
Oh, btw, bu sorgu için SQL 2005 kullanıyorum, bu yüzden bana bildirmeme yardımcı olabilecek herhangi bir yardımcı yeni özellik varsa.