我有一个查询,按客户月份计算销售额。但是,我有一些客户在一个月内没有购买。对于这些情况,我希望MonthNum字段的SalesDlr值为0,但MonthNum值仍然需要实际的月份数。目前,我在下面的查询中没有获得MonthNum值:如何添加缺失的月份?
SELECT
a.Customer,
a.CustomerName,
a.MonthNum,
a.FiscalYear,
a.SalesDlr
FROM
(SELECT
sd.SBCUST AS Customer,
sd.RMNAME AS CustomerName,
fc.FiscalMonthNum AS MonthNum,
fc.FiscalYear,
SUM(sd.SBEPRC) AS SalesDlr
FROM
dbo.SalesData sd
LEFT OUTER JOIN dbo.FiscalCalendar fc ON fc.FiscalDate = sd.SBINDT
WHERE
sd.SBTYPE = 'O'
AND
sd.SBINDT > '2012-12-31'
AND
sd.SBCLS NOT IN ('1500')
GROUP BY
sd.SBCUST,
sd.RMNAME,
fc.FiscalMonthNum,
fc.FiscalYear
)a
GROUP BY
a.Customer,
a.CustomerName,
a.MonthNum,
a.FiscalYear,
a.SalesDlr
ORDER BY
a.Customer,
a.MonthNum,
a.FiscalYear
我该如何解决这个问题?
博客系列,你可能会发现有用:http://www.sqlperformance.com/generate-a -set-1 http://www.sqlperformance.com/generate-a-set-2 http://www.sqlperformance.com/generate-a-set-3 –
“对于这些情况,我希望MonthNum字段有一个0的值为“....你确定?或者你是否希望0为SalesDlr – Talasila
我希望0为SalesDlr,但我还需要MonthNum字段为没有销售的月份有一个值。例如,客户ABC在2013年4月开始购买,然后我需要2013年1月的SalesDlr值为0以及2月和3月。 – tsqln00b