как вставить новую запись на основе старой записи и сделать их разными? - PullRequest
3 голосов
/ 04 января 2012

Например, есть таблица:

Таблица: PATIENT_DETAIL

PATIENT_NAME(varchar), 
DISEASE(varchar), 
SICK_DEGREE(number), 
START_TIME(date), 
END_TIME(date)

В таблице 1000 пациентов, и у каждого могут быть разные заболевания,У некоторых есть заболевание A, у некоторых - заболевание B, а у некоторых - заболевание C.

Теперь я хочу вставить запись для каждого пациента, что у него новое заболевание D, но я хочу, чтобы у него была другая степень болезни.Число может быть в диапазоне от 1 до 1000.

Я хотел бы сделать это, но все они имеют некоторую степень:

INSERT INTO PATIENT_DETAIL
SELECT PATIENT_NAME, 
'DISEASE D', 
(select dbms_random.value(1,1000) num from dual), 
sysdate, 
sysdate

1000 вставленных строк.

если код (выберите dbms_random.value (1,1000) num from dual) сгенерирует 500, то у всех пациентов будет степень болезни 500, но я хочу, чтобы они были разными.

1 Ответ

9 голосов
/ 04 января 2012

Вам не нужно помещать dbms_random.value(1,1000) в подвыбор. Если вы это сделаете, то подвыбор выполняется первым и применяется ко всем последующим строкам.

INSERT INTO PATIENT_DETAIL  
    SELECT PATIENT_NAME, 
          'DISEASE D', 
          dbms_random.value(1,1000), 
          sysdate, 
          sysdate
    FROM PATIENT_DETAIL
...