2015-06-02 5 views
0

Мой бег запросКак добавить значение столбца в postgresql?

select 
to_char(fs.order_item_id ,'99999999999')as Order_Item_Id , 

(case when (sum(fs.shipping_fee) < 0) then (-sum(fs.shipping_fee))else 
sum(fs.shipping_fee) END) as Shipping_Fee_Charged , 

(case when (sum(se.shipping_fee) < 0) then (-sum(se.shipping_fee)) else   
sum(se.shipping_fee) END) as Standard_Shipping_Charges , 

(case when (sum(fs.shipping_fee - se.shipping_fee) < 0) then (- 
sum(fs.shipping_fee - se.shipping_fee)) else sum(fs.shipping_fee - 
se.shipping_fee) END) as Error 

    from 
     "meta".fk_Payment as fs 
    join 
     "meta".ship_error as se 
    on 
    fs.order_item_id = se.order_item_id 
    where 
     (fs.order_status = 'delivered' and se.shipping_fee != 0 and(fs.shipping_fee-se.shipping_fee)< 0) 
     and 
     to_char(se.order_date, 'YYYY') = '2015' 
     and 
     to_char(se.order_date, 'Mon') = 'Feb' 
    group by 
    fs.order_item_id 
    limit 10; 

, как описано выше в запросе вычислить столбец Shipping_Fee_Charged, Standard_Shipping_Charges, Error и показывать только 10 строк. Теперь я хочу снова суммировать этот столбец, всего 10 строк.

Как я могу это сделать?

+0

Каковы структуры таблиц? –

ответ

0

Вы можете использовать подзапрос для хранения результата во временной таблице (T1 в коде ниже), и с этого результирующего найти сумму

SELECT SUM(T1.Shipping_Fee_Charged), SUM(T1.Standard_Shipping_Charges), SUM(T1.Error) 
FROM (
    SELECT 
    to_char(fs.order_item_id ,'99999999999')as Order_Item_Id , 

    (case when (sum(fs.shipping_fee) < 0) then (-sum(fs.shipping_fee))else 
    sum(fs.shipping_fee) END) as Shipping_Fee_Charged , 

    (case when (sum(se.shipping_fee) < 0) then (-sum(se.shipping_fee)) else   
    sum(se.shipping_fee) END) as Standard_Shipping_Charges , 

    (case when (sum(fs.shipping_fee - se.shipping_fee) < 0) then (- 
    sum(fs.shipping_fee - se.shipping_fee)) else sum(fs.shipping_fee - 
    se.shipping_fee) END) as Error 

    FROM "meta".fk_Payment as fs 
    JOIN "meta".ship_error as se ON fs.order_item_id = se.order_item_id 
    WHERE (fs.order_status = 'delivered' and se.shipping_fee != 0 and(fs.shipping_fee-se.shipping_fee)< 0) AND to_char(se.order_date, 'YYYY') = '2015' AND to_char(se.order_date, 'Mon') = 'Feb' 
    GROUP BY fs.order_item_id 
    LIMIT 10 
) AS T1 

Вы также можете использовать WITH Queries (Common Table Expressions), который аналогичен приведенному выше

WITH shipping_details AS (
     SELECT 
     to_char(fs.order_item_id ,'99999999999')as Order_Item_Id , 
     . 
     . 
    ) 
SELECT SUM(Shipping_Fee_Charged), SUM(Standard_Shipping_Charges), SUM(Error) FROM shipping_details 
Смежные вопросы