Суммируйте столбец в объединенной таблице и добавляйте в качестве столбца SQL - PullRequest
0 голосов
/ 17 мая 2018

Итак, скажем, у меня есть две таблицы в Oracle SQL (на самом деле не для данных, а для простоты следует выделить мой вопрос)

Table1, которая содержит только Order_id и Order_quantity, и Table2, которая содержит только Order_id и Order_price

Затем я присоединяюсь к ним следующим образом

Select T1.Order_id,
T1.Order_quantity,
T2.Order_price,
T1.Order_quantity*T2.Order_price As "Order_amount",
Sum(Order_amount) As "Total_Sales"
from Table1 T1
inner join Table2 T2
on T1.Order_id = T2.Order_id

Итак, по сути, я хочу иметь два дополнительных столбца, один как произведение столбцов из двух таблиц, а другой - как сумму этого столбца в моей объединенной таблице (поэтому каждая запись будет одинаковой).Однако, поскольку вам нужно

SUM(variable_name) From Table_Name

Могу ли я назначить имя переменной для моей новой таблицы и затем обратиться к ней.Я попробовал следующее, но я получаю команду SQL, неправильно завершившуюся ошибка

Select T1.Order_id,
    T1.Order_quantity,
    T2.Order_price,
    T1.Order_quantity*T2.Order_price As "Order_amount",
    Sum(Order_amount) from New_Table As "Total_Sales"
    from (Table1 T1
    inner join Table2 T2
    on T1.Order_id = T2.Order_id) As New_Table

Спасибо за любую помощь, извиняюсь, поскольку у меня есть довольно наивное понимание SQL в настоящее время

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Если ваша СУБД не поддерживает window , то вы можете использовать subquery вместо

select order_id, Order_quantity,
       (select t1.Order_quantity * t2.Order_price 
        from table2 t2
        where t2.Order_id = t1.Order_id) as Order_amount,
       (select sum(t1.Order_quantity * t2.Order_price) 
        from table2 t2
        where t2.Order_id = t1.Order_id) as Total_Sales
from table1 t1;
0 голосов
/ 17 мая 2018

Я думаю, вы просто хотите функцию окна:

select T1.Order_id, T1.Order_quantity, T2.Order_price,
       T1.Order_quantity*T2.Order_price As order_amount,
       sum(T1.Order_quantity*T2.Order_price) over () As Total_Sales
from Table1 T1 inner join
     Table2 T2
     on T1.Order_id = T2.Order_id

Вы не можете повторно использовать псевдоним order_amount в select. Вам нужно повторить выражение - или использовать подзапрос или CTE для его определения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...