2013-12-19 4 views
-1

У меня есть две таблицы:Написание выбранного запроса?

table1 =tbl_main: 

    item_id fastec_qty sourse_qty 
    001  102   100 
    002  200   230 
    003  300   280 
    004  400   500 

    table2= tbl_dOrder 
    order_id item_id  amount 
    1001   001  30 
    1001   002  40 
    1002   001  50 
    1002   003  70 

Как я могу написать запрос так, чтобы результат таблиц являются следующие:

sum(fastec_qty)  sum(sourse_qty) difference1 sum(amount) difference2 
     1002    1110    -108   190   812 

difference1 = сумма (fastec_qty) -сумма (sourse_qty);

разница2 = сумма (fastec_qty) -сум (сумма);

ответ

1
select sum(m.fastec_qty) 
    , sum(m.sourse_qty) 
    , sum(m.fastec_qty) - sum(m.sourse_qty) 
    , sum(o.amount) 
    , sum(m.fastec_qty) - sum(o.amount) 
    from tbl_main m 
    , tbl_dOrder o 
where m.item_id = o.item_id 
group by 1, 2, 3, 4, 5 
+0

В результате неправильного –

+0

ITEM_ID = 004 не связан с какой-либо записи во второй таблице, однако я хочу объяснить –

0

Я дам вам подсказку, начните с присоединения таблиц к item_id.

select item_id.tbl_main fastec_qty.tbl_main 
    , source_qty.tbl_main 
    , order_id.tbl_order 
    , amount.tbl_order 
    from tbl_main 
    , tbl_order 
where item_id.tbl_main = item_id.tbl_order; 

Следующий шаг состоит в том, чтобы суммировать три столбца и, наконец, сделать вычитание.

+0

item_id = 004 не связан с какой-либо записи во второй таблице, однако я хочу учесть –

0
SELECT sum(a.sourse_qty) as samount, sum(a.fastec_qty) AS amount, 
     sum(a.sourse_qty- a.fastec_qty) as sfd, 
     (select sum(ITEM_QTY) from TBL_DO)as qty, 
     sum(a.fastec_qty) - (select sum(ITEM_QTY) from TBL_DO) AS difference 
     FROM tbl_main a group by 1,2,3,4,5 

    amount  samount sfd   qty  difference 

    1002   1110  -108   190   812 

Спасибо Все,

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