我正面临查询问题。SQL查询以获取特定列的默认值为0
我的查询是: -
SELECT MONTH(o.OrderDate) as MonthValue,
YEAR(o.OrderDate) as YearValue,
C.CustomerTypeID, Count(o.Total) as NoOfOrders
FROM Orders o
RIGHT JOIN Customers C on C.CustomerID = o.CustomerID
WHERE o.OrderDate >= CONVERT(DATETIME, '1/1/2013 00:00:00 AM')
AND o.OrderDate <= CONVERT(DATETIME, '12/31/2013 23:59:59 PM')
GROUP BY MONTH(o.OrderDate),
YEAR(o.OrderDate),
C.CustomerTypeID
ORDER BY MONTH(o.OrderDate),
YEAR(o.OrderDate),
C.CustomerTypeID
这是给结果如下: -
MonthValue YearValue CustomerTypeID NoOfOrders
1 2013 1 10
1 2013 2 20
1 2013 3 45
2 2013 1 45
2 2013 2 45
3 2013 1 88
3 2013 2 56
3 2013 3 89
至于第2个月,客户类型3有没有结果,所以没有出现在结果。
但我想显示“0”作为其默认的结果,如下图所示: -
2 2013 3 0
在此先感谢。
你有没有尝试过左联接,以获得行显示和ISNULL来处理空值? – Brandon
感谢@Brandon快速重播,但没有NULL值,因为客户类型3在2个月内没有任何订单,所以它不会出现在结果中。 – AnandMeena
您的'RIGHT JOIN'没有意义,因为订单应属于客户,对吧?您是否试过'LEFT JOIN',也就是说,应该显示一个客户是否有订单,而没有订单的客户将有0作为NoOfOrders? – Edper