Принудительно установить значение 0 для несуществующего значения - PullRequest
1 голос
/ 05 января 2010

Группа, я постараюсь объяснить это как можно лучше, и я надеюсь, что это имеет (некоторый) смысл. Я извлекаю данные из созданного мною представления, которое сообщает мне типы клиентов «Спонсора» и сколько таких учетных записей по CustomerType неактивны через 1 год, 2 года и 3 года. Например:

SponsorID | CustomerType | ExpiredAfter | Total
1234        D              1 Year         5
1234        RA             1 Year         7
1234        CA             1 Year         3
1234        D              2 Years        2
1234        RA             2 Years        4
1234        CA             2 Years        1
1234        D              3 Years        8
1234        RA             3 Years        1
1234        CA             3 Years        6

Проблема, с которой я столкнулся, заключается в том, что у SponsorID может не быть RA, срок действия которого истек через 1 год, поэтому в данных ничего не отображается. Поэтому вместо получения:

SponsorID | CustomerType | ExpiredAfter | Total
1235        D              1 Year         5
1235        RA             1 Year         0
1235        CA             1 Year         3

Я получаю:

SponsorID | CustomerType | ExpiredAfter | Total
1235        D              1 Year         5
1235        CA             1 Year         3

Опять же, я не уверен, имеет ли это смысл, но я хочу включить все типы клиентов для всех ExpiredAfter, независимо от того, есть значения или нет. Если значения нет, я просто хочу установить 0 или ноль. Мне нужна эта строка данных с 0 для отчетности.

Есть предложения?

Ответы [ 3 ]

8 голосов
/ 05 января 2010

Похоже, вам нужно использовать LEFT JOIN вместо INNER JOIN.

6 голосов
/ 05 января 2010

Вам также может понадобиться использовать ISNULL (всего, 0) или COALESCE (всего, 0) в зависимости от того, какую СУБД вы используете, и вашего запроса (как указано в womp) ... потому что если рассчитывается ИТОГО, нулевое значение из LEFT JOIN все равно оставит вас без значения 0.

0 голосов
/ 23 октября 2018

Мне кажется, что вы ищете положительные сообщения. Попробуйте использовать перекрестное соединение. Перекрестные объединения связывают все строки из одной таблицы со всеми строками в другой таблице, тем самым давая все возможные результаты в виде

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...