2017-07-14 15 views
0

所以我需要做一個SUMIFS,基本上是我需要的是列在黃色低於強調總結基礎上,OrderNo和WorkCntr列單價:如何在SQL中複製這個非常特定的SUMIFS示例?

enter image description here

的SUMIFS代碼就在旁邊,在Excel中。這很容易,不知道我如何轉換到SQL。我看到CASE聲明像SUMIFS一樣工作,但我一直無法弄清楚。以下是我所嘗試的:

SELECT 
    r.OrderNo, 
    r.JobNo, 
    r.PartNo, 
    r.WorkCntr, 
    r.ActualPcsGood, 
    o.UnitPrice, 
CASE 
    WHEN r.WorkCntr = 'Cutting' AND r.OrderNo = '10426' THEN SUM(o.UnitPrice) 
    ELSE NULL 
    END AS [Total $ per WC per Order] 
FROM OrderDet o JOIN OrderRouting r ON o.JobNo = r.JobNo 
WHERE r.OrderNo = '10426' 
GROUP BY r.OrderNo, r.JobNo, r.PartNo, r.WorkCntr, r.ActualPcsGood, 
o.UnitPrice 
ORDER BY 1, 4; 

此代碼的結果是上表中的前7列。基本上它返回相同的值,而不是SUM。現在理想情況下,我不應該在WHERE子句之外指定訂單號和工作中心,就像在Excel中一樣,只需拖動並且公式始終讀取該特定行的OrderNo和WorkCntr字段。在此先感謝

+0

好吧,也許很容易在Excel中,如果你能看到的列名,圖片不顯示任何,所以我們無法理解的公式。 –

+0

OrderNo在單元格A1上,忘記包含該單元格。列F是UnitPrice,列D是WorkCntr,列A是OrderNo –

回答

2

我認爲你正在尋找的功能是一個窗口函數,但我明白CASE WHEN如何看起來像一個很好的選擇(它可以與SUM結合,但效率不高)。嘗試更換你的CASE WHEN語句:

SUM(UnitPrice) OVER (PARTITION BY r.orderNumber,r.WorkCntr) as [Total $ per WC per Order] 
+0

我的男人,它很好,謝謝 –

相關問題