2

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

我最近刚刚问了这个问题。

虽然我得到了答案,但我在问题中遗漏了一些导致我提出这个问题的重要细节。

我目前有这个查询:

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

我需要从 FinalizedPrintedStickers 中获取 PanelBuildTime 的总和,但仅在 FinalizedPrintedStickers 表中的“状态”字段=“已打印”的情况下

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

任何帮助将不胜感激^_^

编辑:如果 FinalizedPrintedStickers 表上没有 statuses = 'Printed' 我需要 'OrderBuildTime' 为 0 .... 我不知道这是否真的可以使用 Access,希望是..

4

3 回答 3

3

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

Sum(IIF([Status] = 'Printed', PanelBuildTime, 0))
于 2012-12-14T15:43:09.677 回答
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

对不起,错过了访问标签。这是针对 SQL Server 的。

于 2012-12-14T15:36:26.853 回答
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

编辑:您刚刚编辑了您的初始帖子,它改变了一些事情。你已经得到了你的答案,所以我猜没关系;)

于 2012-12-14T15:36:53.000 回答