2015-02-18 3 views
1

Мне нужно выяснить способ возврата значения за все месяцы, даже если нет совпадения. Например, в настоящее время у меня есть данные за период с сентября по январь, но поскольку не было просмотров за сентябрь или октябрь, то не было соответствия, потому что набор данных не показывает значение, если не было просмотров страниц.SQL - Возвращаемое значение null на объединении Вместо результата

Мне нужно показать нуль или 0, где нет совпадения, а не просто никакого результата.

SELECT NULL LINK, 
     u.page_name, 
     TO_CHAR(s.data_date, 'Month-YYYY') as "Month", 
     COALESCE(SUM(s.page_views),0) as "Product Pages" 
from   URL_RELATE u 
FULL OUTER JOIN SITE_DATA s on SUBSTR(u.url,38,7) = SUBSTR(s.page,22,7) 
          or u.url = s.page 
Where u.page_name = :P22_PRODUCT_PAGES_1 
    and u.TRC_CRC = 'TRC' 
group by s.data_date, 
     u.page_name 
order by s.data_date 

ответ

1

Ваш простой ставки (на мой взгляд), вероятно, иметь календарную таблицу (я уже использовал «праздничный стол» в прошлом, где, если мне нужно все даты, дни, месяцы, что угодно). Вы просто оставили соединение с таблицей данных из таблицы календаря с соответствующими столбцами, и у вас будут все ваши месяцы, а не только месяцы со значениями.

Вот пример создания таблицы календаря:

How to create a Calender table for 100 years in Sql