SQL #1 向我返回 163 个帐户(通过 HAVING 子句),因为它给了我从 2013 年开始首次购买特定包(包 102)的帐户。
现在我想在 2013 年按会计月份细分销售额,当我添加 [Unique_Fiscal_Month_Label] 作为列时,它给了我 406 个帐户,而 HAVING 子句现在基本上不起作用。请参阅下面的 SQL #2。任何想法为什么添加 Fiscal_Month 基本上然后给我所有曾经购买过该包裹类型的帐户?我在网上读到检查条件可能会有所帮助,但写下来没有运气。
SQL #1
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 [EQMultiplier] > 0 AND ([SC] = 04 OR [SC] = 06 OR [SC] = 07)
AND (substring([SourceCustomerProductCode],8,3) = 102)
AND [Fiscal_Year] IN (2013, 2012)
GROUP BY left([FactActualDetail].[SourceCustomerProductCode],7)
HAVING MIN([Fiscal_Year])=2013
SQL #2
SELECT
sum([FactActualDetail].[CaseAndGallonVolume]) AS [CaseAndGallonVolume],
sum([FactActualDetail].[AdjGrossMarginAmount]) AS [AdjGrossMarginAmount],
left([FactActualDetail].[SourceCustomerProductCode],7) as [Acct #],
[Unique_Fiscal_Month_Label] AS [Unique_Fiscal_Month_Label]
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 [EQMultiplier] > 0 AND ([SC] = 04 OR [SC] = 06 OR [SC] = 07)
AND (substring([SourceCustomerProductCode],8,3) = 102)
AND [Fiscal_Year] IN (2013, 2012)
GROUP BY
left([FactActualDetail].[SourceCustomerProductCode],7),
[Unique_Fiscal_Month_Label]
HAVING MIN([Fiscal_Year])=2013