尝试显示某些日期的销售额。列应该是那些日期。
让它工作,但代码是如此混乱和复杂,我的直觉告诉我必须有一个简单的方法来写这个。
有人能指出我正确的方向还是想出更优雅的解决方案?
查询
SELECT
(SELECT Jul10.TotalSales
FROM
(SELECT sale.SaleDate, SUM (sale_bow.Qty * bow.Price) As TotalSales
FROM sale
INNER JOIN sale_bow ON sale_bow.SaleID = sale.SaleID
INNER JOIN bow ON bow.BowID = sale_bow.BowID GROUP BY sale.SaleDate) As Jul10
WHERE Jul10.SaleDate ='1999-07-10') AsJul10,
(SELECT Jul11.TotalSales
FROM (SELECT sale.SaleDate, SUM (sale_bow.Qty * bow.Price) As TotalSales
FROM sale
INNER JOIN sale_bow ON sale_bow.SaleID = sale.SaleID
INNER JOIN bow ON bow.BowID = sale_bow.BowID
GROUP BY sale.SaleDate) As Jul11
WHERE Jul11.SaleDate ='1999-07-11') As Jul11,
(SELECT Jul12.TotalSales
FROM
(SELECT sale.SaleDate, SUM (sale_bow.Qty * bow. Price) As TotalSales
FROM sale
INNER JOIN sale_bow ON sale_bow.SaleID = sale.SaleID
INNER JOIN bow ON bow.BowID = sale_bow.BowID GROUP BY sale.SaleDate)
As Jul12 WHERE Jul12.SaleDate = '1999-07-12')
As Jul12, (SELECT Jul13.TotalSales
FROM (SELECT sale.SaleDate, SUM (sale_bow.Qty * bow.Price) As TotalSales
FROM sale
INNER JOIN sale_bow ON sale_bow.SaleID = sale.SaleID
INNER JOIN bow ON bow.BowID = sale_bow.BowID
GROUP BY sale.SaleDate) As Jul13 WHERE Jul13.SaleDate ='1999-07-13') As Jul13
答案 0 :(得分:2)
试试这个:
SELECT
Jul10 = SUM(CASE WHEN SaleDate = '1999-07-10' THEN sale_bow.Qty * bow.Price ELSE 0 END),
Jul11 = SUM(CASE WHEN SaleDate = '1999-07-11' THEN sale_bow.Qty * bow.Price ELSE 0 END),
Jul12 = SUM(CASE WHEN SaleDate = '1999-07-12' THEN sale_bow.Qty * bow.Price ELSE 0 END),
Jul13 = SUM(CASE WHEN SaleDate = '1999-07-13' THEN sale_bow.Qty * bow.Price ELSE 0 END)
FROM
sale
INNER JOIN sale_bow ON sale_bow.SaleID = sale.SaleID
INNER JOIN bow ON bow.BowID = sale_bow.BowID