Primeiro de tudo, novato aqui e no mundo da Oracle, apenas tentando fazer algum código funcionar:
UPDATE CUSTOMERS
SET RE.LASTNAME = 'NO REFERRAL'
WHERE RE.LASTNAME IS NULL
(SELECT CU.CUSTOMER#, INITCAP(CU.LASTNAME || ', ' || SUBSTR(CU.FIRSTNAME,1,1)) ||'.' AS "CUSTOMER NAME",INITCAP(RE.LASTNAME) AS "REFERRED LAST NAME", INITCAP(RE.FIRSTNAME) AS "REFERRED FIRST NAME"
FROM CUSTOMERS CU LEFT OUTER JOIN CUSTOMERS RE
ON CU.REFERRED = RE.CUSTOMER#);
O bloco aninhado funciona bem, fornecendo uma lista de todos os clientes e o nome e o sobrenome da pessoa que os indicou, incluindo clientes que não têm ninguém que os tenha indicado. O problema que estou tendo é que o nome e o sobrenome do referenciador aparecerão como NULL para as pessoas sem referenciador. (como deveria com a junção esquerda), mas em vez de dizer nulo, gostaria que dissesse "Sem referência" na coluna. Eu também concatenei a coluna do referenciador como o nome do cliente em um ponto, mas não consegui fazer o que eu queria, portanto, dividi o nome de volta. Se houver uma solução para qualquer um dos problemas, ficaria grato, pois isso me deixou perplexo.
Você pode usar NVL para retornar uma string padrão quando um valor nulo for encontrado:
No seu caso, eu tentaria algo assim: