我正在尝试返回销售特定产品的帐户列表(SourceCustomerProductCode = 102),并希望查看在2013年销售此产品的帐户,但如果他们在2012年销售该产品,则我希望他们从我的查询中排除(即我只想返回新客户)。我的下面的查询是返回在2013年销售此产品的帐户,但包括在2012年销售该帐户的帐户。
我知道我可以在SELECT区域下使用[CaseAndGalloneVolume]语句的情况编写这个,但是需要在where子句中编写这个语句,因为最终我要将其他产品添加到我的表中。
感谢您的帮助!
SELECT
sum([FactActualDetail].[CaseAndGallonVolume]) AS [CaseAndGallonVolume],
sum([FactActualDetail].[AdjGrossMarginAmount]) AS [AdjGrossMarginAmount],
left([FactActualDetail].[SourceCustomerProductCode],7) as [Acct #]
FROM [dbo].[FactActualDetail] [FactActualDetail]
LEFT JOIN [dbo].[DimCustomer] [DimCustomer] ON ([FactActualDetail].[CustomerSK] [DimCustomer].[CustomerSK])
LEFT JOIN [Common].[DimDate] [DimDate] ON ([FactActualDetail].[DeliveryDateSK] = [DimDate].[DateSK])
WHERE [Fiscal_Year] = 2013 AND [EQMultiplier] > 0 AND ([SuperChannelCode] = 04 OR [SuperChannelCode] = 06 OR [SuperChannelCode] = 07) AND (substring([SourceCustomerProductCode],8,3) = 102)
GROUP BY left([FactActualDetail].[SourceCustomerProductCode],7)
答案 0 :(得分:1)
尝试放置
HAVING MIN([Fiscal_Year]) = 2013
在查询结束时。
答案 1 :(得分:0)
添加新的聚合列:
sum(case when year = 2013 then 1 else 0 end) as invalidItemCount
并对其进行过滤:
having invalidItemCount = 0
这适用于任意过滤器表达式,而不仅仅适用于2013年。