Sql 如何合并具有不同where条件的两个或多个查询?我必须重用第一个代码中使用的代码

Sql 如何合并具有不同where条件的两个或多个查询?我必须重用第一个代码中使用的代码,sql,sql-server,ssis,data-warehouse,msbi,Sql,Sql Server,Ssis,Data Warehouse,Msbi,---下面的查询给出了所有客户的实际情况,与条件无关 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( 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
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
选择count(不同的事实贷款.customerid)作为[新贷款],avg(事实贷款.Financeamount)作为[平均新贷款金额]
来自dbo.Fact\u促销
哪里
和dbo.Fact_Loan.LoanTypeID=6
和dbo.Fact_Loan.AccountStatusID=1
----下面的查询为客户提供了不同的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
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
选择count(不同的事实贷款.customerid)作为[贷款总额],avg(事实贷款.Financeamount)作为[平均贷款总额]
来自dbo.Fact\u促销
哪里
和dbo.Fact_Loan.AccountStatusID=1

从你的问题来看,我不确定你想达到什么目的

第二个查询中的
WHERE
子句似乎提供了第三个查询中
WHERE
子句的数据子集。除了第二个查询(新贷款)包含一个额外的条件,即LoanTypeId(可能是他们使用的金融产品)为6之外,这两个
,其中
语句看起来都是相同的。我想这是最新的贷款产品或活动

在不知道您想做什么的情况下,很难给出答案,但是如果您想按LoanTypeId显示客户总数,您可以将LoanTypeId列添加到
SELECT
语句中,并在语句末尾添加一个
GROUP by dbo.Fact\U Loan.LoanTypeId
,从而聚合计数


这可能不是一个直截了当的问题,因为您在
选择
(例如
不同的
平均值
)中做一些其他事情,但是如果不知道您的最终目标是什么,就很难完全回答您的问题。

查询的列数不同。你到底想让它们“组合”成什么样?此外,我绝对相信,所有这些连接都不是证明您的问题所必需的。请编辑掉所有不相关的SQL,例如将每个查询更改为
从mytable1中选择x,y
从mytable2中选择a,b
就足够了。很难理解您到底想要什么?你能详细解释一下吗?嗨,波希米亚人。需要将上述查询合并到单个查询中。我知道通过使用内部连接我们可以做到这一点,但我不想在子查询中重复相同的代码(除了where条件所有内容都相同)。在查询中不应重复代码的情况下,是否仍要编写查询?让我知道它是否成功sense@vamshi13:(i)请您,
UNION
以上查询的输出,并验证一下,整个结果集确实会带您到某个地方吗?毕竟,查询2和查询3中的列别名不会出现在输出中的任何位置(如果您
UNION
按照上面列出的顺序对它们进行了排序,而且永远不会出现在行级别)。(ii)
WITH
子句可能有助于防止代码重复。(iii)第二个和第三个查询中的
dbo.Fact\u Loan.AccountStatusID=1
是否都是打字错误?(iv)顺便问一下:请问您的问题的数据仓库、SSI和MSBI方面是什么?