2017-07-28 49 views
0

我有查詢,我想將產品的第一條記錄的SALES_DATE更改爲'01.01.1800'。這意味着我想要獲得存儲在PRODUCT_ID中的所有獨特產品,並檢查產品已加載的第一個SALES_DATE,並將此SALES_DATE更改爲'01.01.1800'。我相信我可以使用RANK函數,但我以前沒有使用過,可能有另一個好的解決方案,我正在爲此編寫查詢。在此欄中,PRODUCT_ID的值不是唯一的。更改oracle中第一條鏈接記錄的日期sql

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

相關問題