powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите в запросах
8 сообщений из 8, страница 1 из 1
Помогите в запросах
    #38981432
Olesia_Dav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из одной и той же базы делаю запрос по принятым к оплате счетам:

SELECT SUM(cps_) as c,SUM(pkd_) as kd,SUM(cpu_) as cusl,SUM(ps_) as s FROM svod WHERE BETWEEN(m_ed,DATE(2015,01,01),DATE(2015,04,30)) AND plat<>63 AND plat<>6001 AND grp_sk in(61,62,63,64,74) AND ps_<>0 AND cps_<>0

делаю запрос по отказанным в оплате счетам:

SELECT SUM(cos_) as co,SUM(pod_) as kdo,SUM(cou_) as cuslo,SUM(os_) as so FROM svod WHERE BETWEEN(m_ed,DATE(2015,01,01),DATE(2015,04,30)) AND plat<>63 AND plat<>6001 AND grp_sk in(61,62,63,64,74) AND os_<>0 AND cos_<>0

делаю запрос по принятым и отказанным в оплате счетам:

SELECT SUM(cps_+cos_) as cs,SUM(pkd_+pod_) as kds, SUM(cpu_+cou) as cusls, SUM(ps_+os_) as ss FROM svod WHERE BETWEEN(m_ed,DATE(2015,01,01),DATE(2015,04,30)) AND plat<>63 AND plat<>6001 AND grp_sk in(61,62,63,64,74) AND ((os_<>0 AND cos_<>0) OR (ps_<>0 AND cps_<>0))

В последнем запросе количество суммируется правильно а сумма разнится(если считать по отдельности ручками сумму двух запросов одна, а програмно другая получается). Как быть?
...
Рейтинг: 0 / 0
Помогите в запросах
    #38981769
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Olesia_Dav, NULL-ы в суммируемых полях могут быть?
...
Рейтинг: 0 / 0
Помогите в запросах
    #38981771
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Olesia_Dav,

думаю, что надо добавит и nz в третий запрос


запрос по принятым к оплате счетам:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT SUM(cps_) as c,
 SUM(pkd_) as kd,
 SUM(cpu_) as cusl,
 SUM(ps_) as s
 FROM svod
 WHERE BETWEEN(m_ed,DATE(2015,01,01),DATE(2015,04,30))
 AND plat<>63 AND plat<>6001 AND grp_sk in(61,62,63,64,74)
 AND ps_<>0 AND cps_<>0



запрос по отказанным в оплате счетам:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT SUM(cos_) as co,
 SUM(pod_) as kdo,
 SUM(cou_) as cuslo,
 SUM(os_) as so
 FROM svod WHERE
 BETWEEN(m_ed,DATE(2015,01,01),DATE(2015,04,30))
 AND plat<>63 AND plat<>6001 AND grp_sk in(61,62,63,64,74)
 AND os_<>0 AND cos_<>0



запрос по принятым и отказанным в оплате счетам:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT SUM(cps_)+sum(cos_) as cs,
 SUM(pkd_)+sum(pod_) as kds,
 SUM(cpu_)+sum(cou) as cusls,
 SUM(ps_)+sum(os_) as ss
 FROM svod
 WHERE BETWEEN(m_ed,DATE(2015,01,01),DATE(2015,04,30))
 AND plat<>63 AND plat<>6001 AND grp_sk in(61,62,63,64,74)
 AND ((os_<>0 AND cos_<>0) OR (ps_<>0 AND cps_<>0))
...
Рейтинг: 0 / 0
Помогите в запросах
    #38998791
Olesia_Dav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,

Все равно стоимость получается больше, хоть как считай
...
Рейтинг: 0 / 0
Помогите в запросах
    #38998997
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Olesia_Dav,

Приложите таблицу или выполните запрос без сумм и найдите разницу в результатах трех запросов.
...
Рейтинг: 0 / 0
Помогите в запросах
    #39000583
Olesia_Dav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

я и пытаюсь все значения с нулем убрать как в первом запросе так и во втором, а когда вместе произвожу расчет, то почему-то прибавляется стоимость у которой количество нулевое(раз количество нулевое, то и стоимость не должна прибавляться)
...
Рейтинг: 0 / 0
Помогите в запросах
    #39000590
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ноль и NULL разные вещи:
NULL + 1 = NULL
0 + 1 = 1

Если поля могут содержать NULL, а надо считать как 0, то использовать функцию NVL()
Код: sql
1.
SELECT SUM(nvl(cps_,0) + nvl(cos_, 0)) ... 
...
Рейтинг: 0 / 0
Помогите в запросах
    #39001007
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Olesia_Davtanglir,

я и пытаюсь все значения с нулем убрать как в первом запросе так и во втором, а когда вместе произвожу расчет, то почему-то прибавляется стоимость у которой количество нулевое(раз количество нулевое, то и стоимость не должна прибавляться)

Отсюда не видны правила заполнения таблиц, но OR в запросе меня смущает
Я бы делал бы два отдельных запроса и через 3й запрос с join получал итог.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите в запросах
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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