With xxdemo_tab As( 
  Select 1 person_id, 'Alice' first_name, 'Jones' last_name From dual Union All 
  Select 2 person_id, 'Bob' first_name, 'Smith' last_name From dual Union All 
  Select 3 person_id, 'Charles' first_name, 'Walker' last_name From dual Union All 
  Select 4 person_id, 'Dave' first_name, 'Simpson' last_name From dual Union All 
  Select 5 person_id, 'Elaine' first_name, 'Andrews' last_name From dual 
) 
Select x1.person_id, x2.first_name, x3.last_name From  
  (Select Row_Number() Over (Order By dbms_random.value) n, person_id From xxdemo_tab) x1, 
  (Select Row_Number() Over (Order By dbms_random.value) n, first_name From xxdemo_tab) x2, 
  (Select Row_Number() Over (Order By dbms_random.value) n, last_name From xxdemo_tab) x3 
Where x1.n=x2.n 
  And x2.n=x3.n 
Order By person_id
                        | PERSON_ID | FIRST_NAME | LAST_NAME | 1 | Alice | Smith | 2 | Bob | Jones | 3 | Charles | Simpson | 4 | Dave | Andrews | 5 | Elaine | Walker | 
|---|
With xxdemo_tab As(
  Select 1 person_id, 'Alice' first_name, 'Jones' last_name From dual Union All
  Select 2 person_id, 'Bob' first_name, 'Smith' last_name From dual Union All
  Select 3 person_id, 'Charles' first_name, 'Walker' last_name From dual Union All
  Select 4 person_id, 'Dave' first_name, 'Simpson' last_name From dual Union All
  Select 5 person_id, 'Elaine' first_name, 'Andrews' last_name From dual
)
Select person_id, first_name, last_name
  From xxdemo_tab
Model
  Dimension By (Row_number () Over (Order By person_id) idx)
  Measures (person_id, first_name, last_name)
  Rules Automatic Order
    (first_name [idx] = first_name[Round(Dbms_Random.Value(1,5))]);