2015-11-05 50 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有數據,那麼先生,那麼您的查詢將返回術語'去年銷售的產品' –