Извините, если этот заголовок этого вопроса не очень хорош;Я не уверен, что могу кратко описать это, так что вот более подробная версия:
Я пытаюсь создать отчет, и я на самом деле не уверен, что то, что я хочу сделать, может быть полностью выполненооператор SQL.Вывод, который я хочу получить, будет примерно таким:
Product X
January: 1 sold
February : 0 sold
Product Y
January : 0 sold
February: 1 sold
Вот базовый оператор SQL (который, кстати, должен работать с SQL Server 2000 и 2008 - не спрашивайте):
SELECT p.productName,
SUM(s.salesID) AS numSold,
MONTH(s.salesDate) AS monthSold
FROM sales s
LEFT JOIN products p ON s.productID = p.productID
WHERE s.saleDate > '1/1/2011'
AND s.saleDate < '2/28/2011'
GROUP BY p.productName
ORDER BY p.productName, MONTH(s.salesDate)
Проблема, насколько я понимаю, состоит в том, что этот оператор SQL (справедливо) не возвращает строку для комбинации месяц + продажи за любой месяц, когда продаж не было.Но чтобы упростить вывод этих данных, мне нужно, чтобы оператор возвращал некоторое значение (в идеале 0, но это не обязательно) для любого продукта + месяц, который не содержит данных.
Итак, запрос теперь возвращается так:
productX January 1
ProductY February 1
... и я хотел бы, чтобы он вернулся так:
productX January 1
productX February 0
productY January 0
productY February 1
Это вроде какэто то, что я должен быть в состоянии сделать.Я попробовал что-то вроде этого:
SELECT p.productName,
ISNULL(SUM(s.salesID),-100) AS numSold,
MONTH(s.salesDate) AS monthSold
... но, возможно, как и ожидалось, это не сработало.
Помощь?(-;