Это можно сделать с помощью следующего запроса, если для имени есть только два допустимых значения.
WITH
tv as (select id, name, sn from app where name = 'TV'),
cb as (select id, name, sn from app where name = 'CB')
SELECT
nvl(tv.id, cb.id) AS id,
tv.name AS name_tv,
tv.sn AS sn_tv,
cb.name AS name_cb,
cb.sn AS sn_cb
FROM tv
FULL OUTER JOIN cb
ON tv.id = cb.id;
Для большего количества значений используйте более хитрый PIVOT:
SELECT * FROM (
SELECT id, name, sn
FROM app
) PIVOT (
MAX(name) as name, MAX(sn) as sn
FOR name IN ('TV' as TV, 'CB' as CB) --put other name values there
)