2012-12-14 112 views
2

求和聲明我有2和表1被稱爲SteelOrders另一種是所謂FinalizedPrintedStickersWHERE子句中使用GROUP BY

,我剛剛問this問題。

儘管我得到了一個答案,但我在這個問題中忽略了一些引起我這個問題的巨大細節。

我現在有這個疑問:

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

我需要得到PanelBuildTime的總和從FinalizedPrintedStickers,但只有在「狀態」字段中FinalizedPrintedStickers表=「打印」

如何我是否在Sum語句中添加where子句?

任何幫助,將不勝感激^ _^

編輯:如果沒有狀態=在FinalizedPrintedStickers表「印刷」我需要「OrderBuildTime」爲0 ....我不知道知道這是否實際上可能使用Access或不,希望它是..

回答

3

,我想你想在你的選擇列表中的IIf()表達:

Sum(IIF([Status] = 'Printed', PanelBuildTime, 0)) 
+0

非常感謝你,先生。 –

0

這是你所需要的?

剛剛讀了你的scema細節,sry的其他問題。如何:

Select OrderNumber, 
     Sum(case when PanelBuildTime is null then 0 else PanelBuildTime end) AS OrderBuildTime 
    from SteelOrders 
    left outer JOIN (select * from FinalizedPrintedStickers 
     where Status = 'Printed') f ON 
    SteelOrders.OrderNumber = LEFT(FinalizedPrintedStickers.SN,10) 
    GROUP BY OrderNumber 

Select OrderNumber, 
    Sum(statusPrintedCount) AS OrderBuildTime 
from SteelOrders 
inner JOIN (select *, 
case when Status = 'Printed' then 1 else 0 end as statusPrintedCount 
    from FinalizedPrintedStickers) f ON 
SteelOrders.OrderNumber = LEFT(FinalizedPrintedStickers.SN,10) 
GROUP BY OrderNumber 

SRY,錯過了訪問標記。這是針對SQL Server的。

+0

沒有,因爲我需要的所有行主表(SteelOrders),這隻會給我行打印狀態,我需要它,所以如果沒有訂單打印的狀態,它顯示orderbuildtime爲0.對不清楚的問題,我不能' t想想如何在Access SQL中不支持case =/ –

+2

'case ... when'。 – HansUp

0

你可以嘗試這樣的事:

Select Distinct a.*, b.PanelBuildTime 
From SteelOrders a, 
(Select OrderNumber, Sum(PanelBuildTime) AS OrderBuildTime from SteelOrders 
INNER JOIN FinalizedPrintedStickers 
ON 
SteelOrders.OrderNumber = LEFT(FinalizedPrintedStickers.SN,10) 
GROUP BY OrderNumber) b 
Where a.OrderNumber = b.OrderNumber 

編輯:剛纔編輯您的初始後,它改變的東西。你已經得到了你的答案那麼它的確定我猜;)根據您的回覆貝絲