Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2018, 13:12   #1
alexkl123
Новичок
Джуниор
 
Регистрация: 30.07.2018
Сообщений: 2
По умолчанию sql запрос

Никак не пойму как сделать запрос. Есть таблица "Оказанные услуги", есть "Оплата" этих услуг. Может быть несколько записей Оплаты на одну Оказанную услугу, может не быть вообще. В Оказанных услугах есть Код клиента. Нужно сделать выборку "Код клиента" и его долг (СтоимостьУслуги - сумма его платежей).

SELECT [Оказанные услуги].КодКлиента, Sum(Оплата.СуммаОплаты) AS paid
FROM [Оказанные услуги] LEFT JOIN Оплата ON [Оказанные услуги].Код = Оплата.КодУслуги
GROUP BY [Оказанные услуги].КодКлиента;

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

Попробовал сделать так

SELECT [Оказанные услуги].КодКлиента, ([Оказанные услуги].СуммаОплаты-Nz((SELECT Sum(Оплата.СуммаОплаты) AS [Sum-СуммаОплаты] FROM [Оплата] where Оплата.КодУслуги=[Оказанные услуги].Код),0)) AS debt
FROM [Оказанные услуги], Оплата
GROUP BY [Оказанные услуги].КодКлиента, [Оказанные услуги].Код, [Оказанные услуги].СуммаОплаты;
считает правильно, но не могу сгруппировать по Коду клиента, если убрать из группировки Код и Сумму Оплаты, тогда вложенный селект будет ругаться
alexkl123 вне форума Ответить с цитированием
Старый 30.07.2018, 13:46   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

приведите полностью структуру таблиц

вот, например, в таблице Оплаты есть "Код клиента" ?

кроме того, обычно есть ещё понятие временного интервала (периода).
У вас этого нет (или Вас не интересует период)?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.07.2018, 14:14   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

По коду клиента собрать всю оплату
Код:
SELECT Y.КодКлиента,SUM(O.СуммаОплаты) AS СуммаОплаты
  FROM [Оказанные услуги] Y LEFT JOIN Оплата O ON O.КодУслуги=Y.Код
  GROUP BY Y.КодКлиента
и использовать подзапросом в
Код:
SELECT U.КодКлиента,SUM(T.СуммаОплаты)-NZ(U.СуммаОплаты,0)
  FROM GdcVag T,
    (SELECT Y.КодКлиента,SUM(O.СуммаОплаты) AS СуммаОплаты
       FROM [Оказанные услуги] Y LEFT JOIN Оплата O ON O.КодУслуги=Y.Код
       GROUP BY Y.КодКлиента) U
  WHERE T.КодКлиента=U.КодКлиента
  GROUP BY U.КодКлиента,U.СуммаОплаты
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.07.2018, 14:34   #4
alexkl123
Новичок
Джуниор
 
Регистрация: 30.07.2018
Сообщений: 2
По умолчанию

Заработало! Спасибо
alexkl123 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос в sql 2005 - SQL Server a.n.o.n.i.m SQL, базы данных 8 31.03.2016 17:01
Написать скрипт, который выгрузит данные из файла в формате JSON, создаст SQL таблицу и написать SQL запрос Mangum Фриланс 3 11.03.2016 05:21
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15