2016-01-07 2 views
-2

Я выполнить следующий запрос, который возвращает 36 строк данныхВозврат ТпустуюУ если столбец пуст в SQL

SELECT 
    A.OBJECTIVE, SUM(A.T_VALUE) 
FROM 
    DB2ADM2.TFINTR10 A 
WHERE 
    (A."YEAR" =10) 
    AND (A.OBJECTIVE BETWEEN 'WAAAA' AND 'WZZZZ') 
GROUP BY 
    A.OBJECTIVE 


When I merge with another table and add the Narration field (OB_Narr5) the rows of data are reduced as the Ob_Narr5 does not exist for every Objective, see sql. 

    SELECT A.OBJECTIVE, SUM (A.T_VALUE), B.OB_NARR5 
    FROM DB2ADM2.TFINTR10 A INNER JOIN DB2ADM2.TFINOBJP B ON B.OB_12345 = A. 
     OBJECTIVE 
    WHERE (A."YEAR" =10) 
    AND A.OBJECTIVE BETWEEN 'WAAAA' AND 'WZZZZ' 
    GROUP BY A.OBJECTIVE, B.OB_NARR5 

The rows returned are now only 4. 

How can I return all the rows including the blank fields and/or return just the rows with the blank fields? 

Спасибо за ответы, левый и полное внешнее соединение и работу.

How do I replace the <NULL> with a blank instead please? 

WAAAA -173597.12 <NULL> 
WABAA 222717.76 GENERAL       

ответ

0

Вы можете использовать полное внешнее соединение для сохранения значений из обеих таблиц или Left Outer Регистрация для любой конкретной таблицы

5

Использование LEFT JOIN вместо INNER JOIN, который не делает записей падение левой таблицы, содержащие пустые столбцы

0
select A.OBJECTIVE 
    ,SUM(A.T_VALUE) 
    ,B.OB_NARR5 
from DB2ADM2.TFINTR10 A 
left join DB2ADM2.TFINOBJP B on B.OB_12345 = A.OBJECTIVE 
where A."YEAR" = 10 
    and A.OBJECTIVE between 'WAAAA' and 'WZZZZ' 
group by A.OBJECTIVE 
    ,B.OB_NARR5 
Смежные вопросы