2015-11-05 58 views
-2

对于这2个表:对于这两个表:Product(产品ID,产品名称),销售(的SalesOrderID,产品ID,SaleDate) -

产品(产品ID,产品名称)

销售(的SalesOrderID,产品ID ,SaleDate)

  • 获取通过出售去年的产品列表。获取清单

  • 去年没有销售的产品。

+0

你能告诉我们你取得了什么吗? –

+0

至少尝试做一些事情,如果你遇到任何麻烦,那么我们可以帮助你。 – Wanderer

+0

有人对这个问题进行了投票。真的,它值得加票吗? – Wanderer

回答

-1
去年售出

select Product.ProductName from Product inner join Sales on Product.ProductID = Sales.ProductID where year(Sales.SaleDate) = year(getdate())-1 

去年

select Product.ProductName from Product where ProductID not in (select ProductID in Sales where year(Sales.SaleDate) = year(getdate())-1) 
+0

downvote的任何解释?请:/ –

+0

最后意味着上一次不是以前。你有一些语法错误。 –

+0

去年是不是去年? –

-1

这里没有卖最好的解决方案,能够SARG

select distinct p.ProductID, p.ProductName 
from Product p 
join Sales s on p.ProductID = s.ProductID 
where s.SaleDate >= cast (cast(year(getdate()) as varchar(8)) + '0101' as date) 

和:

select distinct p.ProductID, p.ProductName 
from Product p 
left join Sales s on p.ProductID = s.ProductID 
      and s.SaleDate >= cast (cast(year(getdate()) as varchar(8)) + '0101' as date) 
where s.ProductID is null 
+0

's.SaleDate> = cast'不会去年搜索去年的搜索吗? –

+0

@AnikIslamAbhi,你会得到s.SaleDate> ='20150101'。 “last”中有其他意思吗? –

+0

但是,如果我在16/08/2014,12/01/2013,10/06/2012有数据,那么先生,那么您的查询将返回术语'去年销售的产品' –