Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как заставить запрос вернуть ноль для набора данных, которых нет? / 7 сообщений из 7, страница 1 из 1
23.11.2001, 14:18
    #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
23.11.2001, 14:41
    #32017698
Porton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить запрос вернуть ноль для набора данных, которых нет?
Сформулировать ещё один запрос, в котором отсутствующие значения выявить через NOT EXISTS, и объединить при помощи UNION
...
Рейтинг: 0 / 0
23.11.2001, 15:01
    #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
23.11.2001, 15:50
    #32017705
Aleksandr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить запрос вернуть ноль для набора данных, которых нет?
Сорри, но первый вариант все равно один результат возвращает, а второй ругается на то, что нельзя делать агрегат из агрегата или квери...
...
Рейтинг: 0 / 0
23.11.2001, 15:56
    #32017707
Porton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить запрос вернуть ноль для набора данных, которых нет?
Покажи первый
...
Рейтинг: 0 / 0
23.11.2001, 16:06
    #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
24.11.2001, 11:31
    #32017729
unfam
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить запрос вернуть ноль для набора данных, которых нет?
SELECT NumberID,
CASE WHEN SUM(Summ) IS NULL THEN 0 ELSE SUM (Summ)
FROM PaymentsList L...

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


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