SQL中的并集与聚合
我有3个SQL查询,我想使用Union将它们合并到一个表中我尝试了不同的查询,但没有一个有效,我缺少什么SQL中的并集与聚合,sql,sql-server,union,Sql,Sql Server,Union,我有3个SQL查询,我想使用Union将它们合并到一个表中我尝试了不同的查询,但没有一个有效,我缺少什么 SELECT DISTINCT place.type AS type, COUNT(place.type)AS place, 0 AS msd, 0 AS county FROM place GROUP BY place.type; SELECT DISTINCT mcd.type, 0 AS
SELECT DISTINCT
place.type AS type,
COUNT(place.type)AS place,
0 AS msd,
0 AS county
FROM place
GROUP BY place.type;
SELECT DISTINCT
mcd.type,
0 AS place,
COUNT(mcd.type) AS msd,
0 AS county
FROM mcd
GROUP BY mcd.type;
SELECT DISTINCT
county.type,
0 AS place,
0 AS msd,
COUNT(county.type) AS county
FROM county
GROUP BY county.type;
因此,最终输出将是方案(类型、地点、mcd、县)其中,type包含3个表中类型的所有不同值,place包含type值在place表中出现的次数,mcs和country的出现次数相同。您需要一个外部查询来从三个查询组合中获取
type
值
下面是一个示例,使用UNION ALL set运算符组合三个查询的结果。该查询是一个内联视图,由外部查询引用,外部查询对类型列执行GROUP by,对计数/0列执行SUM AGGRATE
SELECT t.type
, SUM(t.place)
, SUM(t.msd)
, SUM(t.county)
FROM ( SELECT place.type AS type
, COUNT(place.type) AS place
, 0 AS msd
, 0 AS county
FROM place
GROUP BY place.type
UNION ALL
SELECT mcd.type
, 0 AS place
, COUNT(mcd.type) AS msd
, 0 AS county
FROM mcd
GROUP BY mcd.type
UNION ALL
SELECT county.type
, 0 AS place
, 0 AS msd
, COUNT(county.type) AS county
FROM county
GROUP BY county.type
) t
GROUP BY t.type
对于每个查询中的
GROUPBY
子句,不需要DISTINCT关键字 将3个表连接在一起似乎更适合您的要求
SELECT coalese(place.type,mcd.type,conty.type) AS type,
COUNT(place.type)AS place,
COUNT(mcd.type) AS msd,
COUNT(county.type) AS county
FROM place
FULL OUTER JOIN mcd ON place.type = mcd.type
FULL OUTER JOIN county ON place.type = county.type
GROUP BY coalese(place.type,mcd.type,conty.type)
您会收到什么错误消息?在查询之间添加
联合时有什么问题?我认为这应该行得通。但是,不同的
不是必需的。