Вам придется отказаться от названия предмета:
select sum((dla.unit_list_price + dla.unit_selling_price) * dla.ordered_qty) as totaldiscount
from doo_lines_all dla
В результате будет получен только один вывод (одна строка, один столбец) «105»
Если вы хотите сохранить название товара и в строках указать индивидуальную скидку и повторяющуюся сумму, мы можем использовать аналитику:
select
dla.itemname,
(dla.unit_list_price + dla.unit_selling_price) * dla.ordered_qty as discount,
sum((dla.unit_list_price + dla.unit_selling_price) * dla.ordered_qty) over() as totaldiscount
from doo_lines_all dla
Это выдаст результат как:
Item_Name Discount TotalDiscount
Item1 50 105
Item2 25 105
Item3 30 105
Существуют и другие способы достижения того же самого, но аналитическую функцию, пожалуй, проще всего написать, хотя, возможно, сложнее понять, чем сделать это:
select
dla.itemname,
(dla.unit_list_price + dla.unit_selling_price) * dla.ordered_qty as discount,
t.totaldiscount
from doo_lines_all dla
cross join
(
select sum((unit_list_price + unit_selling_price) * ordered_qty) as totaldiscount
from doo_lines_all
) t
Это вычисляет сумму в подзапросе, а затем соединяет ее с каждой строкой из dla через перекрестное соединение. Можно подумать, что он работает так же, как аналитика / это один из способов понять, как работает аналитика