-2

---下面的查询给出了所有客户的事实,无论条件如何

SELECT     count( dbo.Fact_Promotion.customerid) as Mailquantity
FROM         dbo.Fact_Promotion   
INNER JOIN dbo.Dim_Promotion  
    ON dbo.Fact_Promotion.PromotionID = dbo.Dim_Promotion.PromotionID 

---以下查询为客户提供了where条件

SELECT     count(distinct fact_loan.customerid) as [New loans] ,avg(Fact_Loan.Financeamount) as [Avg New Loan Amount]
FROM         dbo.Fact_Promotion 
 where <condition> 
      AND  dbo.Fact_Loan.LoanTypeID = 6 
      AND dbo.Fact_Loan.AccountStatusID = 1

----下面的查询给出了不同where条件的客户

SELECT     count(distinct fact_loan.customerid) as [Total loans],avg(Fact_Loan.Financeamount) as [Avg Total Loan Amount]
FROM         dbo.Fact_Promotion 
 where <condition>
    AND dbo.Fact_Loan.AccountStatusID = 1
4

1 回答 1

0

从您的问题中,我不确定您要达到的目标。

第二个查询中的WHERE子句似乎传递了WHERE第三个查询中子句的数据子集。两个WHERE语句看起来都一样,除了第二个查询(新贷款)包含一个额外的条件,即 LoanTypeId(可能是他们采取的金融产品)是 6。我猜这是最新的贷款产品或活动。

在不知道您要做什么的情况下,很难给您答案,但是如果您想按 LoanTypeId 显示客户总数,您可以通过将 LoanTypeId 列添加到SELECT语句并GROUP BY dbo.Fact_Loan.LoanTypeId在语句末尾添加 a 来汇总计数.

这可能不是直截了当的,因为您正在做一些其他的事情SELECT(例如 theDISTINCT和 the AVG),但不知道您的最终目标是什么,很难完全回答您的问题。

于 2015-06-19T09:00:23.880 回答