Генерация отчетов Oracle SQL без нуля - PullRequest
0 голосов
/ 11 декабря 2018

Мой запрос:

SELECT s.artist_id AS ArtistID,
       s.name AS Song,
       at.name AS artistname,
       a.name AS Albumname
  FROM album s
       LEFT OUTER JOIN song a ON s.id = a.album_id
       LEFT OUTER JOIN artist at ON at.id = s.artist_id;

пусто в таблице песен и альбомов

для указанного выше запроса после объединения таблиц в отчете есть пустое значение (демонстрационный результат)

Фактическирезультат

A B     
1 2                                                        
3 

Ожидаемый результат

A B                                   
1 2                                                  
3 *  

Я хочу напечатать приведенный выше результат в excel, а не в null, его следует заменить любым символом.Не могли бы вы помочь мне, как это сделать?

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Стандартной функцией ISO / ANSI для этого является COALESCE():

SELECT a.artist_id AS ArtistID,
       a.name AS Song,
       COALESCE(ar.name, '*') AS artistname,
       COALESCE(s.name, '*') AS Albumname
FROM album a LEFT OUTER JOIN
     song s
     ON a.id = d.album_id LEFT OUTER JOIN
     artist ar
     ON ar.id = a.artist_id;

Обратите внимание, что я изменил псевдонимы таблиц, чтобы они были сокращениями для имен таблиц.

0 голосов
/ 11 декабря 2018

Один из вариантов - использовать функцию NVL, например,

nvl(a.name, '*') as albumname

. Или DECODE может помочь:

decode(a.name, null, '*', a.name) as albumname

Или CASE:

case when a.name is null then '*'
     else a.name
end as albumname
...