так и должно происходить 
Вы выбираете строку для каждого товара выбираете строку из ОПЛАТА
и соответственно она суммируется столько раз, сколько у вас есть товарных строк. 
Рекомендую для более удобного чтения писать запросы через JOIN 
Если по счету может быть несколько оплат вам нужно использовать подзапросы 
1. Определить счет и подзапросом итог поступлений закрывающих счет 
2. определить его цену = сумму (итого по Naimen) 
3. вывести результат 
в реальных условиях, правильнее отслеживать счета закрытые оплатами
(как минимум по признаку «счет оплачен полностью»)
В вашей схеме — вы всегда проводите расчет по всей БД без ограничений…
ниже запрос который выполнить вашу задачу (не оптимизированный):
Select QR1.*,
 sum(Naimen.Kolvo*Naimen.Cena) AS SUMM,
 sum(Naimen.Kolvo*Naimen.Cena) — QR.Payment AS RAZN
FROM ( 
 SELECT
 SCHET.Data,
 Postav.Nazv,
 Schet.Shet,
 Schet.id,
 Schet.OtKogo, 
 ( Select sum(OPLATA.Opl) from Naimen Where Naimen.Shet = Schet.id ) As Payment
 FROM Schet
 JOIN Postav ON Postav.id=Schet.OtKogo
 JOIN Oplata ON Oplata.Shet = Schet.id
 GROUP BY
 Schet.Data,
 Postav.Nazv,
 Schet.Shet,
 Schet.id,
 Schet.OtKogo
 ) QR1
JOIN Naimen ON Naimen.Shet = Schet.id
GROUP BY QR1.Data,
 QR1.Nazv,
 QR1.Shet,
 QR1.id,
 QR1.OtKogo,
 QR1.Payment