5. Повторяются пп.1-4, пока каждая строка таблицы Abonent не будет просмотрена.
Если во внешнем запросе используется предложение GROUP BY, то выражения, указанные в нем, можно использовать внутри подзапросов.
Например, с помощью следующего связанного вложенного запроса можно получить общие суммы начислений и оплат по каждому абоненту: SELECT AccountCD,
(SELECT Sum (NachislSum) FROM NachislSumma N WHERE N.AccountCD = P.AccountCD)
AS Nachisl, Sum (PaySum) AS Pay FROM PaySumma P GROUP BY AccountCD;. Результат выполнения запроса представлен на рис. 3.95.
|
ACCOUNTCD |
NACHISL |
PAY |
|
005488 |
222,83 |
222,83 |
|
015527 |
84,96 |
84,96 |
|
080047 |
256,88 |
256,88 |
|
080270 |
221,30 |
221,30 |
|
080613 |
114,66 |
114,66 |
|
115705 |
747,95 |
747,95 |
|
126112 |
40,60 |
40,60 |
|
136159 |
16,60 |
16,60 |
|
136160 |
112,60 |
112,60 |
|
136169 |
160,66 |
160,66 |
|
443069 |
195,10 |
195,10 |
|
443690 |
39,47 |
39,47 |
Рис. 3.95. Результат соотнесенного вложенного запроса
Здесь в подзапросе вычисляется общая сумма всех начислений для абонента, отобранного внешним запросом. Затем возвращенное подзапросом значение выводится по каждому абоненту в результирующем столбце Nachisl. Из результата следует, что каждый абонент полностью оплатил начисленные ему суммы.
предыдущаяследующая