Where子句在Sum语句中使用group by

时间:2012-12-14 15:27:01

标签: sql ms-access

我有2个表1被称为 SteelOrders ,另一个被称为 FinalizedPrintedStickers

我最近刚问过this问题。

虽然我得到了答案,但我在问题中遗漏了一些引导我回答这个问题的细节。

我目前有这个查询:

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

我需要从FinalizedPrintedStickers获取PanelBuildTime的总和,但仅限于FinalizedPrintedStickers表中的'Status'字段='Printed'

如何在Sum语句中添加where子句?

任何帮助都将非常感谢^ _ ^

编辑:如果在FinalizedPrintedStickers表上没有状态='已打印',我需要'OrderBuildTime'为0 ....我不知道这是否真的可以使用Access或不,希望它是..

3 个答案:

答案 0 :(得分:3)

根据您对Beth的回复,我认为您希望在选择列表中使用IIf()表达式:

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

答案 1 :(得分: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。

答案 2 :(得分: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
编辑:你刚刚编辑了你的初始帖子,它改变了一些事情。你已经得到了答案,所以我猜是好的;)