Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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中将3个表分组的日期之间进行筛选_Sql_Sql Server - Fatal编程技术网

在SQL Server中将3个表分组的日期之间进行筛选

在SQL Server中将3个表分组的日期之间进行筛选,sql,sql-server,Sql,Sql Server,我在SQL Server中有以下SQL: SELECT Itens.Mercadoria, Mercadoria.Nome, Cabecalho.Data, SUM(ValorUnitario) AS Total, SUM(Quantidade) AS Quantidade FROM Itens INNER JOIN Mercadoria ON Itens.Mercadoria = Mercadoria.Codigo INNER JOIN

我在SQL Server中有以下SQL:

SELECT 
    Itens.Mercadoria, Mercadoria.Nome, Cabecalho.Data, 
    SUM(ValorUnitario) AS Total, 
    SUM(Quantidade) AS Quantidade
FROM 
    Itens 
INNER JOIN 
    Mercadoria ON Itens.Mercadoria = Mercadoria.Codigo 
INNER JOIN 
    Cabecalho ON Cabecalho.Codigo = Itens.Cabecalho 
WHERE 
    Cabecalho.Data >= '2016-01-01' 
    AND Cabecalho.Data <= '2018-12-31'
GROUP BY 
    Itens.Mercadoria, Mercadoria.Nome, Cabecalho.Data 
ORDER BY 
    4 DESC

假设Sales和SaleItems之间的关系基于SalesId 您可以在指定开始日期和结束日期之间使用一个适当的值

  select  Products.ProductName 
        , sum(SaleItems.Price)
        , sum(SaleItems.Quantity)
  from  Products
  inner join SaleItems on SaleItems.IdProduct = Products.IdProduct
  inner join Sales on Sales.IdSale = SaleItems.IdSale
  where SaleDate between your_start_date and your_end_date
  group by  Products.ProductName 
在您的情况下,删除或聚合Cabecalho.数据列,例如:

  SELECT Itens.Mercadoria
      ,  Mercadoria.Nome
      , SUM(ValorUnitario) AS Total
      , SUM(Quantidade) AS Quantidade
  FROM Itens INNER JOIN Mercadoria ON Itens.Mercadoria = Mercadoria.Codigo 
  INNER JOIN Cabecalho ON Cabecalho.Codigo = Itens.Cabecalho 
  WHERE Cabecalho.Data between   '2016-01-01' AND  '2018-12-31'
  GROUP BY Itens.Mercadoria, Mercadoria.Nome
  ORDER BY 4 DESC


你说“不得不过滤”,如果你不是指SQL语句,那么你应该检查这个。。。SQL查询选择两个日期之间的日期,这是Sales和SalesItems之间的关系?这些表如何相互关联?我在SaleItem中看到IdProduct,但是SaleItems与销售之间的联系是什么?我编辑了这个问题,我认为通过示例更容易理解。太好了,谢谢!很好。
  SELECT Itens.Mercadoria
      ,  Mercadoria.Nome
      , SUM(ValorUnitario) AS Total
      , SUM(Quantidade) AS Quantidade
  FROM Itens INNER JOIN Mercadoria ON Itens.Mercadoria = Mercadoria.Codigo 
  INNER JOIN Cabecalho ON Cabecalho.Codigo = Itens.Cabecalho 
  WHERE Cabecalho.Data between   '2016-01-01' AND  '2018-12-31'
  GROUP BY Itens.Mercadoria, Mercadoria.Nome
  ORDER BY 4 DESC
  SELECT Itens.Mercadoria
      ,  Mercadoria.Nome
      ,  max(Cabecalho.Data)
      , SUM(ValorUnitario) AS Total
      , SUM(Quantidade) AS Quantidade
  FROM Itens INNER JOIN Mercadoria ON Itens.Mercadoria = Mercadoria.Codigo 
  INNER JOIN Cabecalho ON Cabecalho.Codigo = Itens.Cabecalho 
  WHERE Cabecalho.Data between   '2016-01-01' AND  '2018-12-31'
  GROUP BY Itens.Mercadoria, Mercadoria.Nome 
  ORDER BY 4 DESC