【发布时间】:2013-06-19 16:48:25
【问题描述】:
我有一个查询,按会计月份按客户提取销售额。但是,我有一些客户在给定的月份内没有购买。对于这些情况,我希望 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
我该如何解决这个问题?
【问题讨论】:
-
" 对于这些情况,我希望 MonthNum 字段的值为 0 " .... 你确定吗??还是您希望 SalesDlr 为 0
-
我希望 SalesDlr 为 0,但我还需要 MonthNum 字段为没有销售的月份设置一个值。例如,客户 ABC 是否在 2013 年 4 月开始购买,那么我需要 2013 年 1 月的 SalesDlr 值以及 2 月和 3 月为 0。
-
您的查询不应该然后 FiscalCalendar 离开加入 SalesData 吗?似乎您想要没有销售的月份,因此切换订单是有意义的。
-
这仍然给了我相同的结果。
标签: tsql sql-server-2012-express