powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вложенный запрос
1 сообщений из 126, страница 6 из 6
Вложенный запрос
    #39574373
Rismen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ptr128Rismenпропущено...


Если открыть бд, то в таблице Residency столбце PriceOfResidency полная стоимость за проживание. В таблице Payment столбце Pay сколько оплачено. И нужно вывести тех клиентов, которые либо не заплатили, либо оплатили частично.
Я вижу, что клиенты 1,2,3 полностью оплатили.
В запросе я, так как писал его без БД, неправильно указал имя поля. Вместо SUM(ISNULL(P.Payment,0)) должно быть SUM(ISNULL(P.Pay,0))
И запрос честно выдает оставшихся двух клиентов.

Еще раз запрос, с исправленным именем поля:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT C.Surname, SUM(Q.PriceOfResidency)-SUM(Q.Payment) AS Debt
FROM Clients C
JOIN (SELECT R.ClientID, MAX(R.PriceOfResidency) AS PriceOfResidency, SUM(ISNULL(P.Pay,0)) AS Payment
  FROM Residency R
  LEFT JOIN Payment P ON R.ResidencyID=P.ResidencyID
  GROUP BY R.ClientID, R.ResidencyID ) Q
  ON C.ClientID=Q.ClientID
GROUP BY Surname
HAVING ABS(SUM(Q.PriceOfResidency)-SUM(Q.Payment))>0.005



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


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