2017-07-28 29 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