Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写此SQL Server查询的更好方法?_Sql_Sql Server - Fatal编程技术网

编写此SQL Server查询的更好方法?

编写此SQL Server查询的更好方法?,sql,sql-server,Sql,Sql Server,正在尝试显示某些日期的销售额。列应为所述日期 让它工作,但代码是如此混乱和复杂,我的直觉告诉我必须有一个简单的方法来写这个 有人能给我指出正确的方向或提出一个更优雅的解决方案吗 查询 SELECT (SELECT Jul10.TotalSales FROM (SELECT sale.SaleDate, SUM (sale_bow.Qty * bow.Price) As TotalSales FROM sale INNER JOIN s

正在尝试显示某些日期的销售额。列应为所述日期

让它工作,但代码是如此混乱和复杂,我的直觉告诉我必须有一个简单的方法来写这个

有人能给我指出正确的方向或提出一个更优雅的解决方案吗

查询

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 
试试这个:

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

也许可以试试codereview.se