Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Нужно чтобы выводились результаты группировки даже если условие не соблюдено  [new]
Aleksy
Member

Откуда:
Сообщений: 29
Есть таблица Accounts, имена которых нужно вывести в любом случае даже если нет данных в базе или условие не соблюдено.

Accounts связана с таблицей Transes.

Вот запрос

SELECT        tblAccounts.Id, tblAccounts.Name
FROM           tblAccounts LEFT OUTER JOIN tblTranses ON tblAccounts.Id = tblTranses.AccountId
WHERE        (tblTranses.TransDate <= CONVERT(DATETIME, '2019-03-22 00:00:00', 102)) OR
                         (tblTranses.TransDate IS NULL)
GROUP BY tblAccounts.Id, tblAccounts.Name


Если в базе вообще нет записей то запрос выводит результаты 2 Account.
Если в базе если запись например 20 числа, то запрос будет выводить результаты когда условие даты будет После 20 числа, если условие будет До то ни одного Account не выводится... как сделать что бы Accounts выводились всегда?
24 мар 19, 10:18    [21841915]     Ответить | Цитировать Сообщить модератору
 Re: Нужно чтобы выводились результаты группировки даже если условие не соблюдено  [new]
court
Member

Откуда:
Сообщений: 1646
Aleksy,

перенеси условия из where в on
24 мар 19, 11:02    [21841928]     Ответить | Цитировать Сообщить модератору
 Re: Нужно чтобы выводились результаты группировки даже если условие не соблюдено  [new]
Aleksy
Member

Откуда:
Сообщений: 29
court,

Спасибо, понял!
24 мар 19, 11:22    [21841933]     Ответить | Цитировать Сообщить модератору
 Re: Нужно чтобы выводились результаты группировки даже если условие не соблюдено  [new]
Aleksy
Member

Откуда:
Сообщений: 29
А что если в в таблице Transes есть записи без Accounts.Id, типа как вывести в этом же запросе строку "без счета"?
26 мар 19, 15:03    [21843861]     Ответить | Цитировать Сообщить модератору
 Re: Нужно чтобы выводились результаты группировки даже если условие не соблюдено  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28168
Aleksy
А что если в в таблице Transes есть записи без Accounts.Id, типа как вывести в этом же запросе строку "без счета"?
Тогда нужно вместо LEFT JOIN использовать FULL JOIN
26 мар 19, 17:26    [21844078]     Ответить | Цитировать Сообщить модератору
 Re: Нужно чтобы выводились результаты группировки даже если условие не соблюдено  [new]
Aleksy
Member

Откуда:
Сообщений: 29
Так все получается, спасибо!

Но теперь с группировкой выбираются все счета, по каждой записи для счета, а суммы без счетов выводятся общей суммой и само называние счета пустое, как сделать что бы выводилось что-то типа "без счета"?
9 апр 19, 17:57    [21857575]     Ответить | Цитировать Сообщить модератору
 Re: Нужно чтобы выводились результаты группировки даже если условие не соблюдено  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28168
Aleksy
а суммы без счетов выводятся общей суммой и само называние счета пустое, как сделать что бы выводилось что-то типа "без счета"?
Написать nullif(tblAccounts.Name, 'без счета')
9 апр 19, 18:31    [21857637]     Ответить | Цитировать Сообщить модератору
 Re: Нужно чтобы выводились результаты группировки даже если условие не соблюдено  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3050
alexeyvg
Aleksy
а суммы без счетов выводятся общей суммой и само называние счета пустое, как сделать что бы выводилось что-то типа "без счета"?
Написать nullif(tblAccounts.Name, 'без счета')
ISNULL только, а не NULLIF, нет?
10 апр 19, 13:16    [21858235]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить