GOALDB2 SELECT COUNT, если NULL, то по умолчанию 0
Я пытаюсь выбрать идентификатор пользователя из одной таблицы и количество сопутствующих элементов из другой таблицы в DB2. Я пытаюсь выполнить этот запрос в SSIS, чтобы импортировать данные в базу данных SQL Server, где я буду выполнять дополнительные процессы преобразования данных. Я упоминаю SSIS не потому, что думаю свою часть проблемы, а только для справочной информации. Я уверен, что проблема связана с моей неопытной работой в DB2. Мой опыт в SQL Server, я очень новичок в DB2.
ВЫПУСК
Проблема возникает, когда (я предполагаю) счетчик равен 0. Когда я выполнить запрос в моих командах DB2 редакторе, он просто возвращает пустую строку. Я ожидаю, что он, по крайней мере, вернет идентификатор пользователя, а затем просто получит пустое поле для подсчета, но вместо этого вся строка пуста. Это вызывает проблемы с моим пакетом SSIS, где он пытается создать кучу вставок без данных.
Опять же, это предположение, потому что я не испытываю DB2 Command Editor или DB2, но если я немного открою даты, я получу ожидаемые результаты (идентификатор пользователя и количество).
Я попытался обернуть счет в функции COALESCE(), но это не решило проблему.
QUERY
SELECT a.user_id, COUNT(DISTINCT b.item_number) as Count
FROM TABLE_A a
LEFT OUTER JOIN TABLE_B b
ON a.PRIMARY_KEY = b.PRIMARY_KEY
WHERE a.user_id = '1234'
AND b.DATE_1 >= '01/01/2013'
AND b.DATE_1 <= '01/05/2013'
AND b.DATE_2 >= '01/01/2013'
AND b.DATE_2 <= '12/23/2014'
AND a.OTHER_FILTER_FIELD = 'ABC'
GROUP BY a.user_id
Ваше внешнее соединение является фактически внутренним соединением, потому что вы применяете предикаты к TABLE_B _after_ join, поэтому несогласованные строки исключаются. Поместите связанные с датой предикаты _into_ условие соединения. – mustaccio