2016-12-05 4 views
1

У меня есть две таблицы: tblOrder и tblOrderDetail Table.SUM записи нескольких (относятся к другой таблице) записей в другой таблице

tblOrderDetail содержат ниже строк:

OrderDetailID OrderID Product Quantity UnitPrice Discount Total 

    1   1  ABC  10  $240.00  10  $2,160.00 
    2   2  CDF  100  $200.00  10  $18,000.00 
    3   3  GHI  200  $150.00  0  $30,000.00 
    4   1  XYZ  40  $100.00  5  $3,800.00 

я хочу SQL-запрос, чтобы получить Итого колонку в tblOrder, которые являются суммой связаны OrderID Всего с tblOrderDetail так:

OrderID  Sub Total 
    1   $5,960.00 
    2   $18,000.00 
    3   $30,000.00 

я попробовать этот SQL запрос:

SELECT 
    OrderID 
    ,(
     SELECT 
      SUM(((tblOrderDetail.UnitPrice) - (tblOrderDetail.UnitPrice * (tblOrderDetail.Discount/100))) * (tblOrderDetail.Quantity)) 
     FROM 
      tblOrderDetail 
     WHERE tblOrderDetail.OrderID = tblOrder.OrderID 
    ) AS [Sub Total] 
FROM 
    tblOrder 

но он дает это

OrderID  Sub Total 
    1   $0.00 
    2   $0.00 
    3   $0.00 

Примечание. Я хочу, чтобы колонка «Итого» динамически не суммировалась с общей колонкой в ​​таблице tblOrderDetail.

Я надеюсь, что кто-то может понять, что я говорю, и, надеюсь, поможет мне достичь этого!

+0

почему вы используете уравнение, чтобы найти общее, как у вас уже есть поле в вашей колонке – monikapatel

+0

Вы хотите добавить результаты в tblOrder после вычисления всего? – monikapatel

+0

Как я упоминаю, у меня есть две таблицы tblOrder и tblOrderDetail. Я хочу добавить результаты (SubTotal) в tblOrder после вычисления значений из tblOrderDetail, как упоминание моего запроса, но его не работает. – FC3D

ответ

0

Использование групповой пунктом для SUM с агрегатной функцией,

Select *, sum(Total) as totalforOrder from ordertbl group by OrderID; 

Demo SQLFiddle

согласно вашему вопросу, здесь коррелированы запрос

SELECT 
tblOrder.OrderID 
,(
    SELECT 
     SUM(((tblOrderDetail.UnitPrice) - (tblOrderDetail.UnitPrice * (tblOrderDetail.Discount/100))) * (tblOrderDetail.Quantity)) 
    FROM 
     tblOrderDetail 
    WHERE tblOrderDetail.OrderID = tblOrder.OrderID 
) AS SubTotal 

ОТ tblOrder;

Его прекрасно работать на SQLFiddle

enter image description here

+0

, если вы хотите рассчитать итоговое значение с помощью уравнения, то посмотрите эту демонстрацию: http://sqlfiddle.com/#!9/fb22e8/10 – monikapatel

+0

как я упоминаю, у меня есть две таблицы tblOrder и tblOrderDetail Я хочу добавить результирующий набор (SubTotal) в tblOrder после вычисления значений из tblOrderDetail, как упоминание моего запроса, но его не работает. – FC3D

+0

@ FC3D Я добавил коррелированный запрос для вас, его работа прекрасна, но я должен сказать, что нужно использовать внутреннее объединение или предложение group by, чтобы получить результат намного быстрее и эффективнее – monikapatel

Смежные вопросы