Sql server 应用包含两个select语句的外层

Sql server 应用包含两个select语句的外层,sql-server,join,Sql Server,Join,我有两个查询已成功内部联接 select t1.countResult, t2.sumResult from ( select count(column) as countResult from tableA join tableB on tableA.id = tableB.id group by name )t1 inner join ( select sum(column) as sumResult

我有两个查询已成功内部联接

select t1.countResult, t2.sumResult from (
    select 
        count(column) as countResult
    from tableA join tableB 
    on tableA.id = tableB.id
    group by name
)t1 inner join (    
    select 
        sum(column) as sumResult
    from tableA
    join tableB
    on tableA.id = tableB.id
    group by name
)t2 
on t1.name= t2.name
上面的查询将返回名称和相应的计数数以及总和。我需要在计数和总和之间做一个比较。如果计数与总和不匹配,它将返回0,否则返回1。所以我的想法是实现另一个外层来封装它们,并在时使用
CASE。然而,我没有应用外层来包装它们?这就是我尝试过的:

select * from(
    select t1.countResult, t2.sumResult from (
        select 
            count(column) as countResult
        from tableA join tableB 
        on tableA.id = tableB.id
        group by name
    )t1 inner join (    
        select 
        sum(column) as sumResult
        from tableA
        join tableB
        on tableA.id = tableB.id
        group by name
    )t2 
    on t1.name= t2.name
)

好的,这个问题可以通过简单地给外层指定一个名称来解决

select * from(
select t1.countResult, t2.sumResult from (
    select 
        count(column) as countResult
    from tableA join tableB 
    on tableA.id = tableB.id
    group by name
)t1 inner join (    
    select 
    sum(column) as sumResult
    from tableA
    join tableB
    on tableA.id = tableB.id
    group by name
)t2 
on t1.name= t2.name
) as whatever  //SQL Server need a name to wrap

希望它能对像我这样的新手有所帮助

好的,到目前为止,你已经选择了你第一次选择所产生的一切(有点没用,但这是你想要的开始;)


我没有任何样本数据来测试这一点,所以可以继续你的代码。 您对t1和t2的查询看起来完全相同-为什么不在一个步骤中进行求和和和计数呢

SELECT COUNT(column) AS countResult
,SUM(column) AS sumResult
FROM tableA INNER JOIN tableB 
    ON tableA.id = tableB.id
GROUP BY name
另外,正如您所提到的,您是SQL Server中常用表表达式的新手。 在SQL 2005之前,您必须在查询中编写这些复杂的查询。。。
现在就养成使用CTE的习惯。

这将只显示countresult=sumresult的记录,而在使用案例时,您可能希望同时显示这两种记录,但实际显示的内容取决于案例语句的结果。不,它将列出每个名称的countresult和sumresult。我已经测试过了,效果很好。不知怎的,我把t1.name=t2.name和countresult=sumresult弄混了。对不起!
SELECT COUNT(column) AS countResult
,SUM(column) AS sumResult
FROM tableA INNER JOIN tableB 
    ON tableA.id = tableB.id
GROUP BY name