我正在搞乱WideWorldImporters数据库Microsoft给人们学习SQL(试图让它更好,因为我经常在工作中使用SQL)。我试图得到2013年所有国家销售额的总和。即使没有匹配条件,SQL也显示所有行
我把那一起罚款,但问题是,有几个国家没有任何上市,并没有出现在列表中。我如何让他们出现,并为他们的销售只有0?从我发现的情况来看,这与JOIN有关,但是我已经搞乱了各种类型,而且似乎没有办法。正如你所看到的,我也试过了一个也没有帮助的CASE。任何提示将非常感谢!
SELECT
StateProvinceName,
CASE WHEN SUM(Quantity * UnitPrice) IS NULL
THEN '0' ELSE SUM(Quantity * UnitPrice) * (AVG(TaxRate)/100 + 1) END AS Sales
FROM
Application.StateProvinces
FULL JOIN Application.Cities
ON Application.StateProvinces.StateProvinceID = Application.Cities.StateProvinceID
FULL JOIN Sales.Customers
ON Application.Cities.CityID = Sales.Customers.DeliveryCityID
FULL JOIN Sales.Orders
ON Sales.Customers.CustomerID = Sales.Orders.CustomerID
FULL JOIN Sales.OrderLines
ON Sales.Orders.OrderID = Sales.OrderLines.OrderID
WHERE OrderDate >= '2013-01-01'
AND OrderDate < '2014-01-01'
GROUP BY StateProvinceName
ORDER BY Sales DESC
正如您所看到的,销售额有很多从州名中删除的表,我不知道这是否会使问题复杂化。
这解决了它谢谢你! – user3066571