2016-12-16 15 views
-3

Q.最後の12か月間に取引に記​​載されていなかった製品の名前を一覧表示します。SQL:これに対して適切なクエリは何ですか?

お得な表

i. Deal_id 
ii. Product_id 
iii. Deal_start_date 
iv. Deal_end_date 

製品薄暗い表

i. Product_id 
ii. Product_name 
iii. Manufacturer 

私の答えは次のとおりです。

Select Product_name, Rank() over(partition by year(Deal_start_date) order by Deal_start_date desc) as Deal_date 
From Product Dim Table 
Right join Deals Table on Product Dim Table.Product_id=Deals Table.Product_id 
where Deal_date > 1 
Group by Product_name 
Order by Deal_date desc 
+0

互換性のないデータベース製品を削除しました。実際に使用しているDBMSに戻ってください。 – Siyual

+0

'プロダクトPから選択する*存在しない(ここではD.Product_Id = P.Product_IDとD.Deal_End_Date> =" today-12 months "'を選択します。今日の12ヶ月は使用するRDBMSに固有です。 – xQbert

答えて

1

これを試してみてください。

を3210
Select p.Product_name 
From Product p 
Where not exists 
    (Select * from Deals 
    where Product_id = p.Product_id 
     and Deal_start_date <= @today 
     and Deal_end_date >= start) 
0

次の項目を確認してください。選択/ PRODUCT_ID、PRODUCT_NAMEは、製品の製造元 は暗く ここ PRODUCT_IDない( 選択PRODUCT_IDで からお得な Deal_end_dare> DateAdd関数(ミリ、-12間 deal_end_date、のGetDate())

関連する問題