【问题标题】:Subquery under Select - adding where clause to exclude dataSelect 下的子查询 - 添加 where 子句以排除数据
【发布时间】:2013-02-20 11:39:33
【问题描述】:

您好,我正在为我们的客户群提取卷信息,并想为 SELECT 下的列 [Volume2] 编写一个子查询,以在 Fiscal Year = 2013 时提取卷信息。由于当前编写查询,当前包含所有卷对于 WHERE 子句下的 Fiscal Years >= 2012,但我不想在那里更改它,而是想为 SELECT 下的 [Volume2] 列指定它。因此,[Volume1] 列将包括 2012 和 2013 财年的交易量,而 [Volume2] 列将仅包括 2013 年的交易量。

任何帮助表示赞赏!谢谢!

SELECT 

sum([FactActualDetail].[Volume]) AS [Volume1],
sum([FactActualDetail].[Volume]) AS [Volume2],
sum([FactActualDetail].[AdjGrossMarginAmount]) AS [AdjGrossMarginAmount],
left([FactActualDetail].[SourceCustomerProductCode],7) as [Acct #],
[DimDate].[Fiscal_Year] as [Fiscal_Year],
[DimCustomer].[TerrSalesManagerName] AS [TerrSalesManagerName],
[DimCustomer].[AccountRepsalesmanName] AS [AccountRepsalesmanName]

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 [Fiscal_Year] >= 2012 AND ([SuperChannelCode] = 04 OR [SuperChannelCode] = 06 OR [SuperChannelCode] = 07) AND (substring([SourceCustomerProductCode],8,3) = 102) 

GROUP BY left([FactActualDetail].[SourceCustomerProductCode],7),[TerrSalesManagerName],[AccountRepsalesmanName],[Fiscal_Year]

【问题讨论】:

  • 是的,行得通!谢谢!

标签: sql select subquery


【解决方案1】:

使用

SUM(CASE WHEN Fiscal_Year = 2013 THEN FactActualDetail.Volume
         ELSE 0 END) AS Volume2

而不仅仅是

SUM(FactActualDetail.Volume) AS volume2

在您的查询中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-31
    • 2021-11-16
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    相关资源
    最近更新 更多