Append and add information from rows above
You can turn your AsIs table into a row set like the ShouldBe table without any temporary tables, using a single query like this:

SELECT
  PN,
  Origin,
  Sub
FROM
  AsIs

UNION ALL

SELECT
  Sub,
  Origin,
  ''
FROM
  AsIs
;


The first half of the query just lists the current contents of the AsIs table. The second half appends the same rows but this time putting the Sub column at the same position as PN in the first query and specifying an empty string in place of the original Sub.

The column names of the final resulting set are defined by the names that the first SELECT is returning. So, Sub values of the second SELECT will be returned as PN in the output and the empty strings as Sub – that is, for your example the output will look like this:

PN      Origin  Sub
------  -----   ------
11111   List1   22222
98765   List2   123456
22222   List1
123456  List2