2017-07-28 4 views
0

製品の1番目のレコードのSALES_DATEを'01.01.1800'に変更するクエリがあります。つまり、PRODUCT_IDに保存されているすべてのユニークな製品を入手し、製品がロードされている最初のSALES_DATEを確認し、SALES_DATE'01.01.1800'に変更することを意味します。私はRANK機能を使用することができると信じていますが、これまでに使用されていないし、別の良い解決策があるかもしれません。この列の値はPRODUCT_IDで一意ではありません。oracle sqlのリンクの1番目のレコードの日付を変更します。

Select PRODUCT_ID,SALES_DATE from SALES_DETAILS 

答えて

1

RANKは必要ない、あなたは、相関サブクエリを使用して最低の日付を取得することができます:あなたはそれをチェックすると

select * 
from sales_details as sd 
where sales_date <> date '1800-01-01' -- don't update if there's already a row with that date 
    and sales_date = -- find the row with the lowest date 
     (select min(sales_date) 
     from sales_details as sd2 
     where sd.product_id = sd2.product_id 
    ) 

は、正しいデータは単にUPDATEに切り替えています:

+0

どのように我々は知っていますSALES_DATEの商品は'01 .01.1800 'ではありません。私はそれらを更新するだけだから。あなたのクエリはすべてのproduct_idを提供しますが、日付は'01 .01.1800 'です – Andrew

+0

なぜ売上データは18世紀に戻っていますか? –

+0

実際にこの製品はもう有効ではなく、データベースにはあるが期限切れの奇妙な日付がある – Andrew

関連する問題