powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как заставить запрос вернуть ноль для набора данных, которых нет?
7 сообщений из 7, страница 1 из 1
Как заставить запрос вернуть ноль для набора данных, которых нет?
    #32017695
Aleksandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые коллеги!
Код примерно такой:

SELECT NumberID, SUM(Summ) FROM PaymentsList L
INNER JOIN Payments P
ON P.PaymentID=L.PaymentID
INNER JOIN MagazinsList M
ON M.ReclamID=L.ReclamID
WHERE L.ReclamID IN (SELECT ReclamID FROM Reclam WHERE RubricID IN (SELECT RubricID From Rubriks WHERE ColorIns=1))
AND M.NumberID BETWEEN (1) AND (44)
GROUP BY NumberID
код этот служит для возвращения набора данных, на основании которых строится график. Но в том случае, когда есть только один NumberID, удовлетворяющий условиям и он возвращает только одну сумму, график строиться не будет. Как можно построить запрос так, чтобы он вернул все существующие номера, и нулевую сумму для тех, которые условию не отвечают?
Типа вместо
----------
36 | 8400

вернул
----------
1 | 0
2 | 0
3 | 0
...
36 | 8400
...
Рейтинг: 0 / 0
Как заставить запрос вернуть ноль для набора данных, которых нет?
    #32017698
Porton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сформулировать ещё один запрос, в котором отсутствующие значения выявить через NOT EXISTS, и объединить при помощи UNION
...
Рейтинг: 0 / 0
Как заставить запрос вернуть ноль для набора данных, которых нет?
    #32017699
Vovka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT NumberID, SUM(ISNULL(Summ,0)) FROM PaymentsList L
(LEFT JOIN Payments P
ON P.PaymentID=L.PaymentID)
LEFT JOIN MagazinsList M
ON M.ReclamID=L.ReclamID
WHERE L.ReclamID IN (SELECT ReclamID FROM Reclam WHERE RubricID IN (SELECT RubricID From Rubriks WHERE ColorIns=1))
AND M.NumberID BETWEEN (1) AND (44)
GROUP BY NumberID
...
Рейтинг: 0 / 0
Как заставить запрос вернуть ноль для набора данных, которых нет?
    #32017705
Aleksandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри, но первый вариант все равно один результат возвращает, а второй ругается на то, что нельзя делать агрегат из агрегата или квери...
...
Рейтинг: 0 / 0
Как заставить запрос вернуть ноль для набора данных, которых нет?
    #32017707
Porton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Покажи первый
...
Рейтинг: 0 / 0
Как заставить запрос вернуть ноль для набора данных, которых нет?
    #32017708
Porton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так он чего возвращает?

SELECT NumberID, 0 FROM PaymentsList L
INNER JOIN Payments P ON P.PaymentID=L.PaymentID
INNER JOIN MagazinsList M ON M.ReclamID=L.ReclamID
WHERE L.ReclamID NOT IN
(SELECT ReclamID FROM Reclam WHERE RubricID IN
(SELECT RubricID From Rubriks WHERE ColorIns=1))
AND M.NumberID BETWEEN (1) AND (44)
...
Рейтинг: 0 / 0
Как заставить запрос вернуть ноль для набора данных, которых нет?
    #32017729
unfam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT NumberID,
CASE WHEN SUM(Summ) IS NULL THEN 0 ELSE SUM (Summ)
FROM PaymentsList L...

Так не подойдет ?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как заставить запрос вернуть ноль для набора данных, которых нет?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]