这是我的数据集。
P_Id I_id I_Name Qty
1 1 Jeans 1
1 5 Salwar 1
2 3 Socks 1
我想更新此表的创建日期,如下所示:
P_Id I_id I_Name Qty C_dt
1 1 Jeans 1 01-01-2011
1 5 Salwar 1 01-01-2011
2 3 Socks 1 02-05-2013
我希望c_dt对于特定的P_id保持不变。我尝试使用dbms_random但它不断变化。我用过的查询:
update test_ins set c_dt=TO_DATE(TRUNC(DBMS_RANDOM.VALUE(TO_CHAR(DATE '2000-01-01','J'),TO_CHAR(sysdate,'J'))),'J') where p_id=i;
* i指的是每次购买的迭代次数。
感谢任何帮助。 谢谢, Pravellika J
答案 0 :(得分:1)
谢谢戈登,我想到了另一种方式:
update test_ins a set c_dt=
(
select TO_DATE(TRUNC(DBMS_RANDOM.VALUE(TO_CHAR(DATE '2000-01-01','J'),TO_CHAR(sysdate,'J'))),'J')
from dual group by a.p_id
)
where purchase_id=i;
我刚刚在子查询中将 group by子句添加到p_id列,它就像魅力一样:)
答案 1 :(得分:0)
使用临时表怎么样?逻辑将是这样的:
create table temp_dte as
select distinct p_id,
TO_DATE(TRUNC(DBMS_RANDOM.VALUE(TO_CHAR(DATE '2000-0101', 'J'),
TO_CHAR(sysdate, 'J')
)), 'J') as val
from test_ins;
然后:
update test_ins
set c_dt = (select val from temp_dte td where test_ins.p_id = td.p_id);