i have a student table as :
I have a stud_claim table as is :
student_id is the foreign key of student table.
At stud_claim table, I have paid_date column .paid_date has some data and some row is null.I need to update stu_claim table where paid_date is null and put the value of the service_date in that paid_date,if paid_date is null.To update the paid_date,the another condition for them is to match the id of the student and stud_claim of stud_claim table.
I tried using merge statement but its not working:
MERGE INTO offc.stud_claim A USING offc.student B ON (A.student_id=B.id AND A.PAID_DATE IS NULL) WHEN MATCHED THEN UPDATE SET A.PAID_DATE=B.SERVICE_DATE
Or simply using update statement also ,it is also possible or not?
I got error at:
ORA-38104: Columns referenced in the ON Clause cannot be updated: "A"."PAID_DATE"
I tried from sql also as:
update offc.stud_claim a set paid_date=(select id from offc.student b where b.id=a.student_id) where a.paid_id is NULL;
Advertisement
Answer
Simple update statement will be enough for it. There is issue in your update statement.(you are selecting id instead of service_date)
Update offc.stud_claim a set paid_date= (select service_date from offc.student b where b.id=a.student_id) where a.paid_date is NULL;
In merge statement, you can not update the column which are used in on clause so you can achieve it using WHERE clause as following:
MERGE INTO offc.stud_claim A USING offc.student B ON (A.student_id=B.id) WHEN MATCHED THEN UPDATE SET A.PAID_DATE=B.SERVICE_DATE WHERE A.PAID_DATE IS NULL;
Cheers!!

