2017-07-17 53 views
0

我想要做的是創建一個SUM case時語句,就像在Excel中的sumifs。我將進入R進行進一步的分析,但認爲它會更快地在MySQL中運行此查詢一次,並拉入R.Sumifs SQL表匹配行值

因此,在Excel中它與=SUMIFS(I:I,H:H,"Shipping",G:G,G7,F:F, F7)(該公式是在「total_cost」列。

其中H列是process,G是order_no,F爲parent_name

我不知道的是如何& F7匹配的整個範圍中的行值G7(該部分或者即使這是有效的,考慮到這個小數據庫有幾百萬行* 45列),在這個例子中,將填寫total_cost colu對那個單元格。

所以下面我試圖得到每個父母的訂單數量的總成本。所有訂單都有其中的流程(編譯,包裝,運輸),並以送貨爲結束。因此,在「total_cost」列中,當process = Shipping時,它將總計當前行的order_noparent_name的所有成本。

我得到了「無效使用組功能」與下面。我嘗試過以下This SUMIFS in SQL Post,但似乎無法適應GROUP BY的工作。

UPDATE m.data 
    set total_cost = 
    IF(process = 'Shipping', 
        SUM(case when order_no = order_no 
         AND parent_name = parent_name 
          THEN sum(process_cost) else 0 END), "") 

或讓我知道你是否有更好的方法當然。

+0

見https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-爲什麼看起來對我來說是一個非常簡單的sql查詢 – Strawberry

回答

0

你可以使用一個更新的總和組內加入由order_no

update data 
inner join (
    select order_no , sum(process_cost) as my_sum 
    from data 
    group by order_no 
) t on t.order_no = data.order_no and data.process= 'Shipping' 
set total_cost = my_sum 
+0

仍然收到相同的錯誤。但從我讀過的其他文章看來,我似乎需要一個「HAVING」條款,儘管目前還不知道該把它放在哪裏。 –

+0

請給我確切的錯誤信息 – scaisEdge

+0

錯誤(可能會)發現..答案更新 – scaisEdge