2012-12-14 54 views
0

SteelOrders總和的一列的一部分

OrderNumber 
----------- 
0000843989  
0000843124  
0000881234  
000
----------- 

FinalizedPrintedStickers

SN     | PanelBuildTime 
------------------------------------- 
0000843989-8R8-4-0 | 360 
0000843989-8R8-4-1 | 200 
0000843989-8R8-4-2 | 900  
0000843989-8R8-4-3 | 360 
0000843989-8R8-4-4 | 460 
0000843989-8S-1-0 | 220  
0000843989-8-2-0 | 360 
etc.. 
------------------------------------- 

所需結果將是:

OrderNumber | PanelBuildTime 
----------------------------- 
0000843989 | 2860  
etc.. 
----------------------------- 

我試過了什麼?

Select OrderNumber, Sum(PanelBuildTime) from SteelOrders 
INNER JOIN FinalizedPrintedStickers 
ON 
SteelOrders.OrderNumber = LEFT(FinalizedPrintedStickers.SN,10) 

不幸的是我不知道如何在每件在steelorder表

還添加WHERE條款本(因爲我使用的OLEDB在我的C#代碼從鋼鐵以便閱讀表)我已經試過了OleDbDataReader執行的Select Sum(PanelBuildtime) where ordernumber = reader["OrderNumber"]的每次讀取,但這是極其緩慢的

回答

2

您可以通過訂單號集團向外界展示了生成時間的總結

Select OrderNumber, Sum(PanelBuildTime) from SteelOrders 
INNER JOIN FinalizedPrintedStickers 
ON 
SteelOrders.OrderNumber = LEFT(FinalizedPrintedStickers.SN,10) 
GROUP BY SteelOrders.OrderNumber 
+0

啊,你已經包括了一個字符串文字,有上千份訂單,他們都需要的生成時間sumations,這筆錢的一個 –

+0

所以你需要一個組,然後顯示每個訂單編號的構建時間總和。我改變了我的答案。 – HelloW

+0

工作我認爲! = D –

1

因爲你往往可能要在不同條件不同列,你也應該瞭解case聲明:

Select OrderNumber, Sum(case when SteelOrders.item = '0000843989' then PanelBuildTime end) 
from SteelOrders INNER JOIN 
    FinalizedPrintedStickers 
    ON SteelOrders.OrderNumber = LEFT(FinalizedPrintedStickers.SN,10) 

在Access(對不起,我錯過了標記),你必須使用IIF代替case

哦,基於上述的評論,你想有一個group by

Select OrderNumber, Sum(PanelBuildTime) 
from SteelOrders INNER JOIN 
    FinalizedPrintedStickers 
    ON SteelOrders.OrderNumber = LEFT(FinalizedPrintedStickers.SN,10) 
group by OrderNumber 
+1

您不能在Access中使用case語句。 – HelloW

相關問題