我有一个查询如何联合汇总查询?
SELECT
CntApp = COUNT(app.ApplicationID)
,r.RegionName
,d.DistrictName
FROM dim.Application app
JOIN dim.Geography g ON (app.ApplicationID = g.GeographyID)
AND (app.CountryId = g.CountryId)
JOIN dim.Region r ON r.RegionID = g.RegionID
JOIN dim.District d ON d.DistrictId = g.DistrictID
JOIN dim.ZIPcode z ON g.ZIPcodeID = z.ZIPcodeID
GROUP BY
r.RegionName
,d.DistrictName
和
SELECT
CntCon = COUNT(c.ContractID)
,r.RegionName
,d.DistrictName
FROM dim.Contract c
JOIN dim.Geography g ON (c.ContractID = g.GeographyID)
AND (c.CountryId = g.CountryId)
JOIN dim.Region r ON r.RegionID = g.RegionID
JOIN dim.District d ON d.DistrictId = g.DistrictID
JOIN dim.ZIPcode z ON g.ZIPcodeID = z.ZIPcodeID
GROUP BY
r.RegionName
,d.DistrictName
,我要合并到一个表,所以在GROUP BY仍然有效。 结果我想:
CntApp | CntCon | RegionName | DistrictName
31 24 Pardubicky Pardubice
21 16 Pardubicky Chrudim
...
我试过UNION ALL却得到了这样的事情,而不是:
CntApp | CntCon | RegionName | DistrictName
NULL 24 Pardubicky Pardubice
21 NULL Pardubicky Pardubice
26 NULL Pardubicky Chrudim
...
Appereantly,StackOverflow上认为我应该包括更多的文字(“它看起来像你的岗位主要是代码,请添加一些更多的细节“),所以在这里它是:
,-""-.
:======:
:======;
`-.,-'
||
_,''--. _____
(/ __ `._|
((_/_)\ |
(____)`.___|
(___)____.|_____
SSt
所以,你得到了什么呢,当你UNION这一切? (好的绘画+1和幽默感;) –
@Rafal:看编辑。 –
当查询几乎完全相同时,您可以通过不进行UNION来优化您的查询;你有效地要求数据库加入同一组表并计算两次。有办法避免这种情况...(我发布了一个无联合答案作为替代) –