我有两个成功内连接的查询
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 WHEN
。但是,我没有应用外层来封装它们?这就是我尝试过的:
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
)
答案 0 :(得分:1)
好的,只需为外层指定名称即可解决问题。
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
希望它能帮助像我这样的新手
答案 1 :(得分:0)
好的,到目前为止,您已经选择了您的第一个选择生成的所有内容(有点无用,但是您想要的开始;)
SELECT CASE
WHEN countresult=sumresult THEN 'Equal'
ELSE 'Not'
END
FROM ( --your join select --
)
答案 2 :(得分:0)
我没有任何样本数据来测试这个,所以可以继续你的代码。 您对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的习惯。